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
我已经设法创建了一个函数,该函数 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