gpt4 book ai didi

c - 递归,算法可能出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:30 25 4
gpt4 key购买 nike

我正在做一个简单的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com