gpt4 book ai didi

java - Java 上的 StackOverflow 错误 - 看不到无限循环?

转载 作者:行者123 更新时间:2023-11-30 07:20:52 25 4
gpt4 key购买 nike

我正在尝试创建一个程序来查找既是“三角形数字”又是“星号”的值。但是,我对程序何时分支到第二个函数等感到有些困惑。感谢您的帮助!

public class Recursion {

public static void main(String[] args) {
// TODO Auto-generated method stub
int count =0;
int n = 1;
int t=0;
int triangularNumber =0;
while (n<Integer.MAX_VALUE)
{
t = isTriangularNumber(n,count,triangularNumber);
triangularNumber=0;
int starNumber= ((6*n)*(n-1)) + 1;
if (starNumber ==t)
{
System.out.println(t);
}
n++;
}
if (n==Integer.MAX_VALUE)
{
System.exit(0);
}
}


public static int isTriangularNumber(int n, int count, int triangularNumber)
{
triangularNumber =triangularNumber + (n-(n-count));
if (count<=n)
{
return isTriangularNumber(n,(count++), triangularNumber);
}
else return triangularNumber;
}

}

最佳答案

return isTriangularNumber(n,(count++), triangularNumber);

在上面的调用中,count++被计算为count。因此,在每次调用时,您实际上都传递了未更改的 count 值。因此 if 条件:-

if (count<=n)

将始终评估为 true,如果第一次调用为真。从而用无限的方法调用填充堆栈。

你的调用应该是 ++count: -

return isTriangularNumber(n,(++count), triangularNumber);

关于java - Java 上的 StackOverflow 错误 - 看不到无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13691580/

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