c - 使用递归求适用整数的总和

标签 c recursion

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

关于c - 使用递归求适用整数的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58070687/

相关文章:

c - pthread_detach 不会改变任何东西

c - 序列点警告说明

c - 获取段错误(核心转储)

java - 使用递归根据用户输入确定斐波那契数

c - 整数值和计算

list - 这是 F# 中尾递归的一个很好的例子吗?

mysql - 递归更新 MySQL 中的父行

javascript - Node.js 中的异步递归问题

java - 计算2的幂,java

c++ - 有向无环图的 C/C++ 实现