我试图取一个整数 (X) 并使用递归来查找适用于 X 之前的特定条件的数字总和。例如,给定 10 并使用可被 2 或 3 整除的条件,总和将为5.
我已经使用了不同的循环来解决问题,现在尝试使用递归进行练习。
int sum(int n) {
int totalSum;
if (n==0)
return 0;
else {
if ((n%2==0)||(n%3==0)){
totalSum+= sum(n-1);
return totalSum;
}
else {
totalSum=sum(n-1);
return totalSum;
}
}
}
我总是收到零或令人难以置信的高数字。
最佳答案
totalSum+= sum(n-1);
不可能是正确的。您从未初始化过totalSum,那么向其中添加一些内容怎么可能是正确的呢?即使 C 自动初始化变量,它也可能会将其初始化为 0
,因此这相当于 totalSum = sum(n-1);
,这是同一件事当n
不是2
或3
的倍数时,您会这样做。
请注意,您的两个条件都没有将当前迭代变量添加到任何内容中。您应该添加 n
,而不是 totalSum
:
totalSum = n + sum(n-1);
关于c - 使用递归求适用整数的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58070687/