Die Programmiersprache Recapis kennt außer den beiden Zahlentypen integer und float noch den Typ rational. Daher liefert in Recapis z.B. der Ausdruck "1/2+1/6" nicht die Floatzahl 0.6666667 sondern die Bruchzahl 2/3.
Die Funktion summe() hat mit der for-Schleife in C, sowohl syntaktische als auch semantische Ähnlichkeit. Angenommen man möchte die Summe der Quadrate der natürliche Zahlen von 1 bis n in einem geschlossenen Ausdruck verwenden, um z.B. die Richtigkeit der Formel im Vergleich zum schlichten Aufsummieren zu überprüfen mit dem Programm
if ( summe() == formel() ) $='Alles OK!'; else $='Nanu?';Für formel() kann man "n^3/3+n^2/2+n/6" einsetzen. Das schlichte Aufsummieren muss jedoch in einer vorgeschalteten Schleife geschehen.
n=3; sum=0; for(i=1;i<=n;i++) sum+=i^2; if ( sum == int(n^3/3+n^2/2+n/6) ) $='Alles OK!'; else $='Nanu?';Mit Recapis kann wie folgt kürzer kodiert werden.
n=3; if ( summe((i=1),i<=n,i^2) == int(n^3/3+n^2/2+n/6) ) $='Alles OK!'; else $='Nanu?';Zu beachten:
Mit diesen beiden Eigenschaften lassen sich die rationalen Zahlen des Potenzdreicks potenz.pdf gemäß unten stehender Formel recht übersichtlich berechnen.
Das folgende Programm kann die Formel $$ a_k = \frac{\binom{e}{k} - \sum_{m=0}^{k-1}a_m\binom{e+1-m}{k+1-m}}{e+1-k} $$ einigermaßen schlicht übernehmenanz=12; a Rvector (anz+1); for(e=0;e<=anz;e++){ $='e = ',"%2d"printf(e),' :\t'; for(k=0;k<=e;k++){ a[k]= ( biko(e,k) // der Binomialkoeffizient - summe ( (m = 0), m <= k-1, a[m] * biko(e+1-m, k+1-m) ) ) / (e+1-k); $=zaehler(a[k]),'/',nenner(a[k]),'\t'; } $='\n'; }und produziert diese Ausgabe:
e = 0 : 1/1 e = 1 : 1/2 1/2 e = 2 : 1/3 1/2 1/6 e = 3 : 1/4 1/2 1/4 0/1 e = 4 : 1/5 1/2 1/3 0/1 -1/30 e = 5 : 1/6 1/2 5/12 0/1 -1/12 0/1 e = 6 : 1/7 1/2 1/2 0/1 -1/6 0/1 1/42 e = 7 : 1/8 1/2 7/12 0/1 -7/24 0/1 1/12 0/1 e = 8 : 1/9 1/2 2/3 0/1 -7/15 0/1 2/9 0/1 -1/30 e = 9 : 1/10 1/2 3/4 0/1 -7/10 0/1 1/2 0/1 -3/20 0/1 e = 10 : 1/11 1/2 5/6 0/1 -1/1 0/1 1/1 0/1 -1/2 0/1 5/66 e = 11 : 1/12 1/2 11/12 0/1 -11/8 0/1 11/6 0/1 -11/8 0/1 5/12 0/1 e = 12 : 1/13 1/2 1/1 0/1 -11/6 0/1 22/7 0/1 -33/10 0/1 5/3 0/1 -691/2730
Wenn man HTML-Kode erzeugen will,
\[\frac{1}{1}\qquad\] \[\frac{1}{2}\qquad\frac{1}{2}\qquad\] \[\frac{1}{3}\qquad\frac{1}{2}\qquad\frac{1}{6}\qquad\]
muss das Programm angepasst werden.
anz=3; B Rvector (anz+1); for(e=0;e<=anz;e++){ $='\\['; for(i=0;i<=e;i++){ B[i]= ( biko(e,i) // der Binomialkoeffizient - summe ( (m = 0), m <= i-1, B[m] * biko(e+1-m, i+1-m) ) ) / (e+1-i); $='\\frac{',zaehler(B[i]),'}{',nenner(B[i]),'}\\qquad'; } $='\\]\n'; }