我试图取一个整数(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不是23的倍数时,这也是相同的操作。

请注意,您的任何条件都不会将当前迭代变量添加到任何内容。您应该添加n,而不是totalSum

totalSum = n + sum(n-1);

09-10 05:26