Java Problem bei einem Programm

moskito08

Alkmene
Registriert
24.03.06
Beiträge
34
Hallo Apfeltalk-Gemeinde!

Ich habe hier ein kleines Programm geschrieben und verstehe nicht das Ergebnis, dass ausgespuckt wird!

class Test {

public static int f(int k) {
if(k==0)return 0;
if(k==1)return 1;
else return f(k-1)+f(k-2);
}

public static void main(String args[]) {
int i,n;
n=Integer.parseInt(args[0]);
for(i=0;i<=n;i++)
System.out.println(f(i));
}
}



Bei der Eingabe von java Test 5 schmeisst das Terminal folgende Zahlen raus:

0
1
1
2
3
5

i wird doch an die Methode f übergeben.
nur wie geht es dann weiter?

Wer hat eine Ahnung?
Grüße,
moskito08
 

Tengu

Apfel der Erkenntnis
Registriert
05.02.07
Beiträge
721
Schon, doch Du gibst f(i) aus, welche den Rückgabewert k hat. Das ist eine einfache Parameterübergabe. Wenn mich nicht alles täuscht wird f einfach rekursiv aufgerufen, so oft, wie du i nach 0 runterzählen kannst. D. h. das System.out.println wird 5 mal gemacht bei i=5... usw. halt.

Wo liegt das Problem genau?
 

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
Mach Dir eine Wertetabelle. Damit erkennst Du am schnellsten was wo passiert.

Du bist ja scheinbar noch in der Lernphase, darum will ich dir hier mal nicht alles vorkauen ;)
 

Tengu

Apfel der Erkenntnis
Registriert
05.02.07
Beiträge
721
Kann ja jeder kommen... kannst Dir auch ne Semantikfunktion aufzeichnen... hehe. ;)
 

moskito08

Alkmene
Registriert
24.03.06
Beiträge
34
Stimmt ich stecke in der Lernphase:)

Wertetabelle wurde angelegt!!

i ist doch null und wird an die Methode f Übergeben!?
Die Methode arbeitet jetzt mit null und setzt bei return null an. und gibt null aus.

Jetzt zählt die Schleife weiter, und zwar auf eins und geht wieder in die Methode:
return 1. und gibt 1 aus.

Schleife zählt auf 2 und geht in die else return und rechnet (2-1) + (2-2) und gibt 1 aus. Ist das soweit richtig, oder liegt hier der Hund begraben??
 

moskito08

Alkmene
Registriert
24.03.06
Beiträge
34
f(k-1)+f(k-2) heisst:
Die nächste Zahl ist die Summe der beiden vorhergehenden.
Ist das RICHTIG???
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Ist es nicht herrlich, wenn einem bei den Hausaufgaben geholfen wird?
 

Tengu

Apfel der Erkenntnis
Registriert
05.02.07
Beiträge
721
Lass mich raten: Informatik, Gymnasium, 11. Klasse? Oder 12.?

Ich hab auch gar nichts dagegen jemanden bei den Hausaufgaben zu helfen. Vorher aber will ich hier ne Semantikfunktion sehen^^: sowas

Ich persönlich find so was toll! Letztendlich einfacher als sich selber nen Algorithmus auszudenken.