【C语言-33】写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和;(依次打印每一位的数字)

目录

 

解题思路:

代码示例:

运行结果:


解题思路:

  1. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
  2. 例如,调用DigitSum(1865),则应该返回1+8+6+5,它的和是20.
  3. 根据题目要求:非负整数,则需要选择语句判断用户输入的数字是一个正数;
  4. 根据题意,需要根据输入的数字大小求出每一个数位上的数字,进而进行相加;
     

代码示例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#include <stdlib.h>

int DigitSum(int n){
	if (n < 9)

		return n;

	else

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

	/*这段递归代码可写成非递归形式:
	while(n>0){
	r=n%10;求模可分离最低位数字
	s=s+r;
	n=n/10;做除可得到下一位数位为最低位
	}
	printf("%d",n);
	*/
	

}

int main(){

	int num = 0;

	printf("输入你要计算的数字: \n");

	scanf("%d", &num);

	DigitSum(num);

		printf("各数位上的数字相加和为%d\n", DigitSum(num));

	system("pause");

	return 0;

}

运行结果:

啾咪~~~~~

分别打印出每一位的数字:

代码示例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#include <stdlib.h>

int DigitSum(int n){
	if (n < 10) {
	
		printf("%4d\n", n);
		return n;
	}

	else {

		printf("%4d\n", n%10);
		return n % 10 + DigitSum(n / 10);
			}

}

int main(){
	int num = 0;
	printf("输入你要计算的数字: \n");

	scanf("%d", &num);
		printf("各数位上的数字相加和为%d\n", DigitSum(num));

	system("pause");

	return 0;

}

运行结果:

啾咪~~~

猜你喜欢

转载自blog.csdn.net/weixin_44749767/article/details/89296630