计算一个数的每位之和(递归实现)

该博客介绍了如何使用递归函数DigitSum计算非负整数的数字之和。通过逐位剥离数字并递归计算,例如对于1729,函数会逐步计算1729→172+9→17+2+9→1+7+2+9,最终得到19。代码中使用C语言实现,主要涉及递归和整数运算。

目录

一、代码实现:

二、代码思路:



题目要求:

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

例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19

输入:1729,输出:19

一、代码实现:

#include <stdio.h>
int DigitSum(size_t n)
{
	if (n < 9)
	{
		return n;
	}
	else
	{
		return DigitSum(n / 10) + n % 10;// 前n-1位之和+第n位
	}
}
int main()
{
	size_t num = 0;//size_t是非负整数类型
	scanf("%u", &num);
	int ret = DigitSum(num);
	printf("%d\n", ret);
	return 0;
}

二、代码思路:

若:输入的是1729:

DigitSum(1729);

计算则需要一位一位的剥下来,因为9最容易剥离,所以用DigitSum(172)函数算出172的组成数字之和  + 9;而DigitSum(172)的每位数字之和再剥离为DigitSum(17)17的每位之和  +2 +9

;当拆成一位数的时候就不需要再拆了。

即是:

DigitSum(1729);

DigitSum(172)+9;

DigitSum(17)+2+9;

DigitSum(1)+7+2+9;

注意:

1729/10=172; 1729%10=9;

172/10=17,172%10=2;

17/10=1,17%10=7;

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值