Wyjasnienie kodu

0

Oto kod

class Test 
{ 
    // method to find factorial of given number 
    static int factorial(int n) 
    { 
        if (n == 0) 
          return 1; 
          
        return n*factorial(n-1); 
    } 
      
    // Driver method 
    public static void main(String[] args)  
    { 
        int num = 5; 
        System.out.println("Factorial of "+ num + " is " + factorial(5)); 
    } 
} 

W jaki sposób działa metoda factoiral bo daje num 5 sprawdza warunek a nastepnie jest 5 * factorial(5-1) czyli powinno zwrócić dwadzieścia w jaki sposób to się zmniejsza ?

0

czyli powinno zwrócić dwadzieścia

Dlaczego powinno zwrócić dwadzieścia?
Przecież masz tam 5 * factorial(4), nie samo 5 * 4.

2

No masz 5 * factorial (5-1) = 5 * factorial (4) -> 5 * 4 * factorial (4-1) = 5 * 4 * factorial(3), aż do 5*4*3*2*1*factorial(0) = 5*4*3*2*1*1.
To się rekurencja nazywa.

0

W Googlu java recursion factorial daje wiele wyników. Pierwszy z brzegu Factorial Program in Java zawiera wersję iteracyjną i rekurencyją

3

Żeby zrozumieć rekurencje musisz najpierw... zrozumieć rekurencje :)

0

zawsze można to zapisać w taki sposób:

int result=1;
    int n=5;
    for(int i=1;i<n;i++){
        result *= i;
    }
    return result;

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