C:反转 int 的递归函数

标签 c recursion integer

我昨天考试的时候遇到了这个问题。我无法解决它,所以你可以想象结果......

创建一个递归函数: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/

相关文章:

c - 使用 scanf 仅输入整数?

C++ 守护程序日志功能不写入文件(段错误?)

C 语法 - 我需要做一个简单的 if 分支来检测特定条件

javascript - 寻找关于改进我的 javascript (jquery) 代码的想法。递归函数

Python 递归算法不适用于大值 - C 程序有效

php - 在 PHP 中的嵌套关​​联数组中搜索值并返回其路径

java - 为什么 Integer.MIN_VALUE 的绝对值等于 Integer.MIN_VALUE

c - 从 C 中的 fgetc() 获取字符

c - 128 位整数在英特尔 C 编译器中支持 +、-、*、/和 %?

c - OpenMP并行的两种方法之间的区别