Rekurencja

0

Hej,

Przerabiam podstawy Javy i nie mogę zrozumieć jak to działa, może ktoś da radę mi wytłumaczyć abym zrozumiał ? :)

Mam kod:

class Factorial{

int factR(int n){
    int result=0;

    if(n==1) return 1;
    System.out.println("result1 "+result+" ");
    result = factR(n-1)*n;
    System.out.println("result2 "+result+" ");
    return result;
}

int factI(int n){
    int t,result;
    result = 1;
    for(t = 1 ; t <= n; t++) result *=t;
    return result;
}

}

public class Recursion {
public static void main(String[] args) {

    Factorial f = new Factorial();

    System.out.println("silnia wyliczona przez metode rekurencyjna.");
    System.out.println("Silnia 3 wynosi: " + f.factR(3));
    System.out.println("Silnia 4 wynosi: " + f.factR(4));
    System.out.println("Silnia 5 wynosi: " + f.factR(5));
    System.out.println();

    System.out.println("silnia wyliczona przez metode iteracyjna.");
    System.out.println("Silnia 3 wynosi: " + f.factI(3));
    System.out.println("Silnia 4 wynosi: " + f.factI(4));
    System.out.println("Silnia 5 wynosi: " + f.factI(5));
}

}

Nie rozumiem działania metody factR, sout porobiłem w celu próby zrozumienia.
Dostaje wyniki nastepujące:
silnia wyliczona przez metode rekurencyjna.
result1 0
result1 0
result2 2
result2 6
Silnia 3 wynosi: 6
result1 0
result1 0
result1 0
result2 2
result2 6
result2 24
Silnia 4 wynosi: 24
result1 0
result1 0
result1 0
result1 0
result2 2
result2 6
result2 24
result2 120
Silnia 5 wynosi: 120

Jak to działa? Bo ja już się zgubiłem.

Z góry dzieki za pomoc :)

0

W skrócie: używasz metody X wewnątrz metody X. Coś ala matrioszki xd

1

Tutaj jest to dobrze wytłumaczone, nie ma sensu się powtarzać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1