jeudi 22 janvier 2015

Rekursion

Hallo,

ich hab ein Problem. Ich hab hier ein Aufgabe und hab keine Ahnung, wie ich da rangehen soll :noe:



Aufgabe:



Gegeben sei die folgende Java-Methode.


Java Code:






  1. int f (int [] a, int l, int r, int x, int y) {



  2. if (l > r) {



  3. return 0;



  4. }



  5. else{



  6. int m = (l+r)/2;



  7. int f1 = f(a,l,m-1,x,y) + f(a,m+1,r,x,y);



  8. if (x <= a[m] && a[m] <= y) {



  9. return f1 + 1;



  10. }



  11. else {



  12. return f1;



  13. }



  14. }



  15. }









a) Stellen Sie die Aufrufstruktur des Aufrufs f(a,0,9,3,6) dar, wobei das Array

int [] a mit den Werten {8,1,2,4,5,7,8,3,0,7} gegeben sei.

Tragen Sie in den Baum für jeden Aufruf von f auch den jeweiligen Rückgabewert ein.



b) Beschreiben Sie, was die Methode f allgemein leistet.



// Aufgeben Ende



Die Aufrufstruktur bekomm ich hin und wann welches return dran ist auch.

Nur weiß ich nicht was ich rechnen muss, damit ich f1 rausbekomme.

Eine Antwort zu b) kann ich auch nicht geben.



Kann mir jemand sagen, wie ich bei so einer Aufgabe am besten vor gehe????

Wie kann man ablesen, was die Funktion macht???



Vielen Dank schonmal





Rekursion

0 commentaires:

Enregistrer un commentaire