C语言实现_计算一个无符号整数的每一位之和(递归)

题目要求:
   自己定义一个递归函数DigitSum(unsigned int),在传入参数会计算返回它的每一位数之和。

具体示例
当输入的参数为: 1729

经过了DigitSum函数的计算之后,返回 19 。也就是 1 + 7 + 2 +9 的和。

首先,我们先把main()函数定义好,再来具体讲下DigitSum(unsigned int)函数的实现了。

main函数代码如下:

#include <stdio.h>

int main(){

	int ret;
	int num;
	printf("请输入一个非负整数,结果将会输出它的每一位之和\n");
	scanf("%d",&num);

	ret = DigitSum(num);
	printf("这个数的每一位之和为:%d\n", ret);

	return 0;
}

这里,我们可以看到main()函数已经定义好了。

那么接下来,我们再接着分析下递归函数实现的思路了。

这里,DigitSum(unsigned int)函数已经写好了。
代码如下:

int DigitSum(int num) {


	while (num > 0) {

		return  (num % 10) + DigitSum(num / 10);

	}

	return 0;
}

这里来分析DigitSum(unsigned int)函数代码的实现思路:

因为题目要求的是求输入的一个无符号整数的每一位数的和,那么我们首先要思考的问题就是如何去得到这个数的每一位了。

这里我们可以灵活利用 ' % ' 和  ' / ' 这来个符号来得到了。

具体可以看下图:

 注:(这里的1,2,3,4看到后面就会了解是啥作用了。)

******解题主要就是搞懂这张图了

到这里,相信我们已经知道了该如何的去取到输入的参数的每一位数了。
其实,在画出这个图的时候,题目就已经解决的差不多了。

因其在求输入的参数的每一位数的时候,都需要两步,先取余再除。
而这每两步就可以看成一个函数。

因此上面求一个四位数的每一位数就可以看成四个函数。

也很巧合,这里我们刚好需要使用递归函数来实现要求。
并且我们观察也可以得到这个函数终止的条件就是当除的结果为0的时候,递归停止。
也就得到了递归的停止条件了 输入参数的值小于或等于零 。

到这里,也就具体的实现思路讲完了。

再最后加上一张运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值