我昨天考试的时候遇到了这个问题。我无法解决它,所以你可以想象结果......
创建一个递归函数:int invertint( int num),它将接收一个整数并返回它但反转,例如:321将返回为123
我写的是:
int invertint( int num ) {
int rest = num % 10;
int div = num / 10;
if( div == 0 ) {
return( rest );
}
return( rest * 10 + invert( div ) )
}
适用于 2 位数字,但不适用于 3 位或更多数字。因为321会在最后阶段返回1 * 10 + 23。
非常感谢!
PS:有没有一种方法可以更快地理解这类递归问题,或者就看个人的想象了?
最佳答案
int invertint( int num ) {
int i ;
for(i=10;num/i;i*=10);
i/=10;
if(i == 1) return num;
return( (num % 10) * i + invertint( num / 10 ) );
}
关于C:反转 int 的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346989/