【C语言】写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19

 这道题依然是要用到函数递归,之前写过一个类似的题,是要按顺序打印一个整数的每一位,这道题可以说是那个题目的变形。感兴趣的可以先看一下这篇文章。https://blog.youkuaiyun.com/Miss_Monster/article/details/81135344

那么这道题是要将一个整数的每一位相加。我们考虑两种情况:

如果这个数 n < 9,代表它是个位数,那么它的每一位之和就是它本身 n。

如果这个数 n > 9,代表它不是个位数,那么要想得到它的每一位就要给它做 n % 10 的计算,这样的得到的是它的一位数字,然后我们可以发现1729可以理解为 9 +172的每一位,172 % 10之后得到 2 与之前的 9 相加,再加上 17 的每一位就好了.....以此类推,那么递归调用的大事化小思想就很明显了。具体代码实现如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

size_t DigitSum(unsigned int  num)
{
	if (num > 9)
		return num % 10 + DigitSum(num / 10);
	else
		return num;
}

int main()
{
	s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值