C 递归 - 将数字的每个数字增加 1,除了数字 9 将为 0

C recursion - increase each digit of a number by 1 except digit number 9 which will be 0

我已经设法创建了一个函数,该函数 return 将每个数字的数字 (0-8) 加 1。

示例: 输入:3 输出:4

输入:345 输出:456

但是我在找到需要 return 0 的数字 9 的解决方案时遇到了问题。

示例: 输入:9 输出:0

输入:945 输出:56

输入:99 输出:0

输入:19 输出:20

注意: 不要专门检查数字是否为 9

我的代码:

int new_num(int num){
    int dig = num%10;
    num = num/10;

    if( num==0 ){
        return dig+1;
    }
    int res = new_num(num);
    dig +=1;
    res *=10;
    res +=dig;
    return res;   
}

谢谢。

给你。

#include <stdio.h>

int new_num( int n )
{
    const int Base = 10;

    return ( n % Base + 1 ) % Base +
           ( n / Base == 0 ? 0
                             : Base * new_num( n / Base ) );
}

int main(void) 
{
    printf( "%d -> %d\n", 99, new_num( 99 ) );
    printf( "%d -> %d\n", 945, new_num( 945 ) );
    printf( "%d -> %d\n", 19, new_num( 19 ) );
    printf( "%d -> %d\n", 123456789, new_num( 123456789 ) );

    return 0;
}

程序输出为

99 -> 0
945 -> 56
19 -> 20
123456789 -> 234567890