我试图取一个整数(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);