返回语句后执行Java递归

时间:2017-02-14 19:15:38

标签: java recursion

我想知道为什么我的递归方法在执行return语句后执行。我正在尝试编写一个简单的程序来计算输入的阶乘,但是因子“4”返回“48”,因为它将“2”乘以两次。请在下面找到我的代码。

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 个答案:

答案 0 :(得分:1)

这就是递归的工作方式,它从被调用的方法返回后返回到multx(n)。将递归视为相同代码的层和层,但该代码必须返回到它完成时所调用的位置。