gpt4 book ai didi

java - 递归中的预递增 (++i ) 和 i + 1。为什么他们有不同的行动? StackOverFlow 错误

转载 作者:行者123 更新时间:2023-12-02 09:38:02 25 4
gpt4 key购买 nike

在递归中,当我编写 res += countNatNum(++len, sum + i, k, d); 时,出现 StackOverFlow 错误。但是当我更改 len + 1 res res += countNatNum(len + 1, sum + i, k, d); 上的预增量时,一切都正常。我不明白为什么会发生这种情况,因为我用 if (len == 3) 检查条件?

public static int countNatNum(int len, int sum, int k, int d){
int base = 9;
if (d > base * k) return 0;
else if (len == k){
if (sum == d){
return 1;
}
else return 0;
}
int res = 0;
int c = (len == 0 ? 1 : 0);
for (int i = c; i <= base; i++){
res += countNatNum(len + 1, sum + i, k, d);
}
return res;
}
}

程序应该计算自然数的数量,其中数字之和==另一个自然数。程序工作正常,但我不明白为什么预增量会以如此奇怪的方式工作。

最佳答案

如果您使用“++”,更新后的值将再次存储。另一方面,“len +1”不会增加“len”。

关于java - 递归中的预递增 (++i ) 和 i + 1。为什么他们有不同的行动? StackOverFlow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57338152/

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