gpt4 book ai didi

java - 递归地将金额拆分为一毛钱、五分镍币和便士

转载 作者:行者123 更新时间:2023-12-01 13:34:14 24 4
gpt4 key购买 nike

我编写了以下代码:

public class CoinChange
{
static int n = 0;
static int count = 0;
public static void main (int value) {
n = value;
recursiveLoop(0, 0, 0, 0);
}
private static int recursiveLoop(int i, int j, int k, int l)
{
if ((i + (5 * j) + (10 * k) + (25 * l)) == n)
count ++;
l++;
if (l > n / 25)
{
l = 0;
k++;
}
if (k > n / 10)
{
k = 0;
j++;
}

if (j > n / 5)
{
j = 0;
i++;
}
if (i>n)
{
System.out.println("Number ways " + n +
" can be changed is " + count + ".");
System.exit(0);
}
recursiveLoop(i, j, k, l);
return count;
}
}

这段代码在 50 美分之前都可以正常工作,但是当我给出的输入大于 50 时,就会出现堆栈溢出错误。请帮我找出这个程序的问题。

最佳答案

唯一的返回是在递归调用之后。这意味着你当前的程序永远不会摆脱递归。您需要检查“完成”条件,并在“完成”为真时返回。或者,将 recursiveLoop(i, j, k, l); 置于 if 语句下。

关于java - 递归地将金额拆分为一毛钱、五分镍币和便士,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392829/

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