题解 | #The Biggest Problem(递归)#

The Biggest Water Problem

https://www.nowcoder.com/practice/435aa556e093463891f6da7d322140a4

// #include <stdio.h>
// int GetAllBitsNum(long long* n);

// int main() {
//     long long n;
//     while (scanf("%lld", &n) != EOF) {
//         int sum = GetAllBitsNum(&n);
//         printf("%d\n", sum);
//     }
//     return 0;
// }

// int GetAllBitsNum(long long* n) {
//     int res;
//     long long tmp;

//     // 循环至少要执行一次
//     do {
//         // res值归0,重新开始计算
//         res = 0;
//         while (*n > 0) {
//             tmp = *n % 10;
//             res += tmp;
//             *n /= 10;
//         }

//         if (res >= 10) {
//             // 上述循环过后*n的值已为0,这里用res给*n重新赋值
//             *n = res;
//         }
//     } while (res >= 10);

//     return res;
// }

// 递归思想:函数的自我调用,同一个函数输出(return)作为同一个函数计算的输入(自我调用)
#include <stdio.h>
int Rec(int x) {
    // 递归退出条件,需放在一般情况前,不然递归一直持续,直到栈空间爆炸ヽ(*。>Д<)o゜
    // x为0时,开始“归”
    if (x == 0) return 0;
    // 一般情况
    // x不为0时,开始“递”
    return (x % 10) + Rec(x / 10);
}
int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        // 调用递归函数
        do {
            n = Rec(n);
        } while (n >= 10);
        printf("%d\n", n);
    }
    return 0;
}

全部评论

相关推荐

孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务