2017-02-14 106 views
-3

我想知道爲什麼遞歸方法執行後,即使它執行return語句。我正在嘗試編寫一個簡單的程序來計算輸入的階乘,但「4」的階乘返回「48」,因爲它將「2」乘以兩次。請在下面找到我的代碼。返回語句後執行Java遞歸

import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.math.*; 
import java.util.regex.*; 

public class Solution { 

    static int soln=0; 
    static boolean start = true; 

    public static void main(String[] args) { 
     Scanner sn = new Scanner(System.in); 
     int n=sn.nextInt(); 
     System.out.println(multx(n)); 
    } 

    public static int multx(int n){ 
     if (start){ 
     soln = n; 
     start = false; 
     } 

     while(n>2) 
     { 
     n--; 
     soln = soln*n; 
     multx(n); 
     } 
     return soln; 
    } 
} 

它爲什麼執行return soln,然後回去multx(n)

+1

它被稱爲遞歸:https://en.wikipedia.org/wiki/Recursion – Andremoniy

+1

我認爲你沒有得到什麼是遞歸。 http://stackoverflow.com/questions/8183426/factorial-using-recursion-in-java檢查這個答案計算在java中的遞歸 – Gatusko

回答

1

這就是遞歸的工作原理,它從被調用的方法返回後返回到multx(n)。將遞歸看作是相同代碼的層和層,但是代碼必須返回到它在任何時候被調用的地方。