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

问题
1、写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
2、递归方式实现打印一个整数的每一位
思路:这两个问题的相似处在于都需要将一个整数的各位求出来,我们知道取整数的各位要用/10、%10的方法。
1、要返回整数的每一位相加的结果,可以先%10取出个位+((n/10)进入函数继续%10取出十位…),该语句的判断条件只要满足整数n大于9,而小于9时,直接返回n即可。
2、要打印一个整数的每一位,就简单了,n满足大于9 的条件,就给n进行/10运算,否则进行%10运算即可。
1、实现代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int DigitSum(int n) {
        if (n <= 0) {
                 return 0;
        }
        else if (n > 0 && n < 9) {
                 return n;
        }
        else return ((n % 10) + DigitSum(n / 10));
}
int main() {
        int n;
        scanf("%d", &n);
        int ret=DigitSum(n);
        printf("%d\n", ret);
        system("pause");
        return 0;
}

运行结果:
在这里插入图片描述
2、实现代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void Print(int n) {
        if (n > 9) {
                 Print (n/10);
        }
        printf("%d ", n%10);
}
int main() {
        int n;
        printf("请输入n:\n");
        scanf("%d", &n);
        Print(n);
        system("pause");
        return 0;
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/swag_wg/article/details/88887448