递归的整数逆序

时间:2019-01-31 14:58:35

标签: c algorithm

  

“编写一个递归函数,该函数将一个整数作为输入(不以0开头)并以相反的顺序返回该整数。

     

例如:58347返回为74385

     

不允许指针,数组,内存分配。”

     

int reverse(int num);

我们必须知道整数的“长度”,在没有全局变量的情况下可以做到吗?

也许有些按位运算?

我的尝试:

int reverse(int num){
    int temp;
    if(num/10 == 0)
        return num;
    else
      return num%10*10+reverse(num=/10)
}

2 个答案:

答案 0 :(得分:3)

  

(不以0开头)

鉴于提供的函数原型,我不确定问题试图在这里暗示什么。

  

我们必须知道整数的“长度”

不,不需要知道整数的长度。

  

可以不使用全局变量吗?

是的,当然。您应该获取整数的单位(即最小值的数字,例如4中的1234),提取它(例如获取123)并继续递归直到数字为0

  

也许有些按位运算?

不,除法(/)和模(%)。

答案 1 :(得分:1)

我不会为您做家庭作业,但会给您一些提示:

  1. n % 10操作将为您提供整数以10为基数的最低有效位。
  2. 使用整数除法时,循环中的条件n /= 10最终始终为false(0),并将以10为底的数字表示的最低有效位更改为第二最低有效数字。
  3. 将累加器变量乘以10将为另一个数字创建“空间”。