java - 陷入递归

标签 java recursion

浏览 Java Complete Reference 我陷入了递归。我打印中间结果来查看值的变化。我可以看到num的值将减少到1并返回1,之后num的值如何增加到3和4?有什么帮助吗?

class Recursion {

    public  int fact(int num){
        int result;

        if(num==1){
            return 1;
        }

        System.out.println("Befor fact value of num is: "+num);//here ok!
        result=fact(num-1)*num;
        System.out.println("After value of num is: "+num); //here not ok!
        //System.out.println("result= "+result);
        return result;
    }
    public static void main(String[]args){
        Recursion obj=new Recursion();
        System.out.println(obj.fact(4));
    }
}

最佳答案

您似乎打印了错误的变量,

System.out.println("Before fact value of n is: "+num);//here ok!
result=fact(num-1)*num;
// You didn't change "num".
System.out.println("After value of n is: "+result); //result, not num.
//System.out.println("result= "+result);
return result;

哪个打印

Before fact value of num is: 4
Before fact value of num is: 3
Before fact value of num is: 2
After value of num is: 2
After value of num is: 6
After value of num is: 24
24

关于java - 陷入递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23068380/

相关文章:

java - 计数器无法解析为类型

Java VarHandle 到带有 java.lang.foreign API 的 C 字符串

haskell - 插入二叉搜索树(仅存储在叶节点的数据)

java - 功能改变输入

java - 来自文件的公钥验证的 SSHJ 示例

java - "unable to connect to database"

java - 使用值对象中的字段对 map 列表进行排序

sql - 在 postgres 中,ORDER BY 似乎在递归 cte 中不起作用

Java计算器 - 调车场

algorithm - 如何评估堆栈溢出前的最大递归调用次数