【问题标题】:Java recursion executing after return statement [duplicate]在返回语句后执行Java递归[重复]
【发布时间】:2017-02-15 03:18:37
【问题描述】:

我想知道为什么我的递归方法在执行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)

【问题讨论】:

标签: java recursion


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-12-22
    • 2010-10-30
    • 1970-01-01
    • 2019-10-07
    • 2012-12-05
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    相关资源
    最近更新 更多