05.11.2013 Aufrufe

Iterative und Rekursive Algorithmen Iteration und Rekursion sind im ...

Iterative und Rekursive Algorithmen Iteration und Rekursion sind im ...

Iterative und Rekursive Algorithmen Iteration und Rekursion sind im ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

© J. Rau Januar 2013<br />

2) Eine rekursive Methode fakultät(int n) berechnet die Fakultät einer positiven ganzen Zahl n.<br />

public int fak (int n) {<br />

if (n > 1) { return n * fak (n- 1); }<br />

else { return 1; }<br />

}<br />

3) Was berechnen die <strong>Algorithmen</strong>, die durch die folgenden Quelltexte dargestellt werden ?<br />

public int irgendwas ( int p, int q ){<br />

if ( p == 0 ) { return 0; } else { return q*irgendwas ( p-1, q ); }; }<br />

public int irgendwas ( int p ){<br />

if ( p == 1 ) { return 1; } else { return p + irgendwas ( p-1 ); }; }<br />

4) Die Methode int querSumme(int zahl) berechnet die Quersumme einer pos. Ganzzahl zahl.<br />

Hinweise: Beispiel: zahl=345 von hinten mit der Zerlegung beginnen:<br />

letzte Ziffer x= zahl modulo 10 5<br />

vorletzte Ziffer a= zahl modulo 100 45<br />

y= (a-x):10 40:10=4<br />

erste Ziffer b= zahl modulo 1000 345<br />

oder einfach die Zahl nehmen<br />

z= (b-a-x):100 300:100=3<br />

Quersumme:<br />

qs=x+y+z<br />

Lässt sich beliebig erweitern für 4 stellige... usw.<br />

x= (zahl modulo10-zahl modulo1) :1<br />

y= (zahl modulo100-zahl modulo10) :10<br />

z= (zahl modulo1000-zahl modulo100-zahl modulo10) :100 ...<br />

Beispiel:zahl= 3456<br />

1.DL qs=6 (3456-(3456%10)):10=345<br />

2.DL qs=5+6 (345-(345%10)):10=34<br />

3.DL qs=4+5+6 (34-(34%10)):10=3<br />

4.DL qs=3+4+5+6 (3-(3%10)):10=0<br />

public int querIterativ (int zahl) {<br />

int qs;<br />

while (zahl>0) {<br />

qs=qs+(zahl%10);<br />

zahl=((zahl –(zahl % 10)) /10);<br />

}<br />

return qs; }<br />

//iterativ<br />

public int querRekursiv (int zahl) { //rekursiv<br />

if (zahl>0) {<br />

qs=querRekursiv((zahl-(zahl%10))/10)+zahl%10<br />

;}<br />

return qs; }

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!