1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Java Problem bei einem Programm

Dieses Thema im Forum "PHP & Co." wurde erstellt von moskito08, 12.02.07.

  1. moskito08

    moskito08 Alkmene

    Dabei seit:
    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
     
  2. Tengu

    Tengu Apfel der Erkenntnis

    Dabei seit:
    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?
     
  3. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    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 ;)
     
  4. Tengu

    Tengu Apfel der Erkenntnis

    Dabei seit:
    05.02.07
    Beiträge:
    721
    Kann ja jeder kommen... kannst Dir auch ne Semantikfunktion aufzeichnen... hehe. ;)
     
  5. moskito08

    moskito08 Alkmene

    Dabei seit:
    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??
     
  6. moskito08

    moskito08 Alkmene

    Dabei seit:
    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???
     
  7. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Ist es. Diese spezielle Folge von Zahlen nennt man Fibonacci-Folge.
     
  8. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Ist es nicht herrlich, wenn einem bei den Hausaufgaben geholfen wird?
     
  9. Tengu

    Tengu Apfel der Erkenntnis

    Dabei seit:
    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.
     
  10. moskito08

    moskito08 Alkmene

    Dabei seit:
    24.03.06
    Beiträge:
    34
    Falsch geradeno_O
    Das war eine ehemalige Klausur im Fach Softwaretechnik(aus dem Grundstudium).

    Jetzt ist es schon klar, ich danke Euch für die Hilfe!!:)
     

Diese Seite empfehlen