gpt4 book ai didi

java - 递归堆栈溢出异常

转载 作者:行者123 更新时间:2023-11-30 03:10:07 24 4
gpt4 key购买 nike

我正在尝试制作一个计算双阶乘的程序(示例 - n=3, => (3!)!= 6!= 720),但我在递归底部和我有堆栈溢出异常。

public static long df(long n) {
if (n == 1) {
return 1;
} else {
return df(n * df(n - 1));
}
}

public static void main(String[] args) {
System.out.println(df(3));
}

最佳答案

您遇到了 df(n * df(n - 1)); 的无限循环

n * df(n-1) 将计算阶乘,而您无意中将答案反馈到递归方法中,导致它永远持续下去

改变

return df(n * df(n - 1));

return n * df(n - 1);

你应该得到正确的阶乘结果

<小时/>

一旦有了这个有效的递归阶乘方法,只需使用 df(df(3)) 创建双阶乘就会变得更加容易

关于java - 递归堆栈溢出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33766776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com