gpt4 book ai didi

java - 找不到任何方法的 StackOverflowError

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

您好,我正在尝试为问题陈述编写 Java 代码:

找到没有一种方法可以将 n 个硬币分发给 m 个成员,其中一个成员是队长(分发者)。每个成员一次可以拿走 1 个硬币,并将其传递给包括队长在内的其他成员。船长不能拥有第一枚硬币。但是,当只剩下一枚硬币时,应该将硬币交给船长。这有多少种可能?

我把这个绑起来了。但是得到 StackOverflowError。请帮忙。

这里我开始调用 solve(1,n)

private static int solve(int r, int n)
{
int count = 0;
if(n==2 && r!=1)
{
return 1;
}
if(n==2 && r==1)
{
return 2;
}
for(int i=1;i<=m;i++)
{
if(r!=i)
count += solve(i,--n);
}
return count;
}

堆栈跟踪

Exception in thread "main" java.lang.StackOverflowError
at NoPrey.solve(NoPrey.java:50)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:62)
at NoPrey.solve(NoPrey.java:

最佳答案

这只是为了帮助您理解错误。

这是因为 n 的值变为负值。只需将 System.out.println(r + "\t\t"+ n); 放在方法的开头,然后再次运行它。 n=4 m=3 初始值为r=1

public static void main(String[] args) throws FileNotFoundException {
solve(1, 4);
}

private static int solve(int r, int n) {
System.out.println(r + "\t\t" + n);
// rest of the code same.

错误前的输出:
1 4
2 3
1 2
3 1
1 0
2 -1
1 -2
2 -3
1 -4
2 -5
1 -6
2 -7
1 -8

关于java - 找不到任何方法的 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32857745/

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