2017-02-14 7 views
-3

return文を実行した後でも、私の再帰メソッドがなぜ実行されるのかを知りたいと思います。私は入力の階乗を計算する簡単なプログラムを書こうとしていますが、 "4"の階乗は "2"を2度乗算するので "48"を返します。以下の私のコードを見つけてください。return文の後に実行する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でrecursinを計算するためのこの答えをチェックする – Gatusko

答えて

1

再帰がどのように動作するかは、呼び出されたメソッドから返された後にmultx(n)に戻ります。再帰は同じコードのレイヤーやレイヤーと考えるが、そのコードはいつでも呼び出された場所に戻る必要がある。

関連する問題