写一个递归函数DigitSum,输入一个非负整数,返回组成它的数字之和

这篇博客通过一个C语言的main函数展示了如何使用递归计算输入数字的各位数字之和。函数`DigitSum(int i)`通过不断将数字除以10并取余,直到数字小于10,从而得到所有位数的和。最终,当输入1729时,程序输出结果为19,验证了算法的正确性。
摘要由CSDN通过智能技术生成
int main()
{
	unsigned int i = 0;
	scanf("%d", &i);
	int ret = DigitSum(i);
	printf("ret=%d", ret);
	return 0;

}

首先,写出main函数

unsigned int表示无符号整数

scanf("%d", &i);表示把键盘上输入的数字传递到i地址里去,通俗的讲,让我们给i赋值

int ret = DigitSum(i);:DigitSum(i)表示我们创建的函数,实际参数是i,函数的返回值是int类型(整型)

接下来写函数部分

int DigitSum(int i)
{
	if (i > 10)
	{
		return DigitSum(i / 10) + i % 10;
	}
	else
	{
		return i;
	}
}

首先,我们要计算所输入的数字组成数字之和,假设我们输入的是1729,如何表示1,7,2,9的和,我们sum(1,2,7,9)=1729%10+172%10+17%10+1%10,我们要对1729先取10的余数,再去除1729/10,再取172的余数,循环往复,取出余数的和就是(1,7,2,9)的和

用递归的方法,限制条件是if(i>10),第一次进入循环,返回的是DigitSum(172)+9 第二次进入循环返回的是DigitSum(17)+2+9,第三次为DigitSum(1)+7+2+9,当进行到第四次时,1<10,返回1,结果为1+7+2+9

1729
ret=19请按任意键继续. . .

检验如图所示

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值