【C语言】第四十一题→输入一个无符号数字,计算数字的每一位之和(用递归实现)

113 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第23天,点击查看活动详情

🚀write in front🚀

🔎大家好,我是泽奀,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🖊

前言

今天开始开始刷C语言题集得第四十一题,冲~已经有41题了。

题目描述

第四十一题→输入一个无符号数字,计算数字的每一位之和(用递归实现)

题目分析

输入一个无符号数字,无非就是用输入函数scanf()进行输入,但是要注意下这是无符号输入那么我们就要在数据类型前面加上unsigned才可以。

计算数字每一位之和,就是假设我们输入的数字是19,那么就是相当于9+1=10,这样。

用递归进行实现,在前面的题已经都说过了,那么再来说下。

概述:一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函数执行完毕后,再一层一层地由里到外退出。

那么递归它也是具有限制条件的,不然它就会造成死递归,这个就相当于死循环一样。

存在限制条件,当满足这个限制条件之后的时候,递归便会不再继续。
每次递归调用之后都会越来越接近这个限制条件。

题目代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int print(unsigned int n)
{
	//这里之所以是n>9是因为n<10的话无论我们输入什么数字都是最终相加之和
	if (n > 9)
	{
		//取模得到个位,除以得到十位。
		return print(n / 10) + n % 10;
	}
	else
	{
		return n;
	}
}
int main(void)
{
	unsigned int num = 0;
	printf("请输入数字→");
	scanf("%d", &num);
	int ret = print(num);
	printf("ret = %d\n", ret);
	return 0;
}

运行结果

运行结果🖊

请输入数字→1234

ret = 10

最后

这道题目还是很容易得,其实有时候递归不要想着这么复杂,按照自己递归想法来就可以了。明白限制条件以及题目规律即可。