c - 递归,算法可能出错

标签 c algorithm recursion

我正在做一个简单的 C 程序,5 位数字的总和。虽然我是用一个简单的函数完成的,但我也需要用递归来完成。我在网上阅读了很多关于这个问题的解决方案使用递归并实现了我的一个。但这是错误的,我无法弄清楚我在我的算法中做了什么网格。

#include<stdio.h>
int sum5(int x);  //function for sum of  digits of 5 digit number

int main()
{
   int x;
   int result;
   printf("Enter a 5 digit number : ");
   scanf("%d",&x);
   printf("Number entered by you is %d",x);
   result = sum5(x);
   printf("Sum of digits of 5 digit number is = %d",&result);
   return 0;
}

int sum5(int x)
{
   int r;
   int sum=0;
   if(x!=0){
      r=x%10;
      sum=sum+r;
      x=x-r;      //doing this so that 0 come in the last and on diving it by 10, one digit will be removed.
      sum5(x/10);
   }
   return sum;
}

但执行后我得到了错误的结果。它在输出上倾倒了一些匿名值。

最佳答案

此外,您的 sum5 函数不正确。您必须将 sum5 的值添加到调用函数的 sum 变量中。

int sum5(int x)
    {
        int r;
        int sum = 0;
        if (x != 0) {
            r = x % 10;
            sum = r;
            //x = x - r;  - this isn't required. integer division will floor x
            sum += sum5(x / 10);
        }
        return sum;
    }

关于c - 递归,算法可能出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16461463/

相关文章:

Android NDK套接字创建空指针

c - 无法使用 C 中的指针创建文件?

reactjs - React 的 "diffing"启发式算法背后的动机是什么?

algorithm - 分而治之、分支和归约有什么区别?

c++ - 找到所有下楼梯的路径?

python - 递归函数 - 无错误且无输出

C - 获取最小可能的有符号整数

c - 在 shmget() C 中使用 IPC_CREAT 的数值等价物

c - 恢复 C (gcc) 中的递归函数?

python - 使用 transaction.atomic 回滚递归表单验证+保存