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 :)