“编写一个递归函数,该函数将一个整数作为输入(不以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)
}
答案 0 :(得分:3)
(不以0开头)
鉴于提供的函数原型,我不确定问题试图在这里暗示什么。
我们必须知道整数的“长度”
不,不需要知道整数的长度。
可以不使用全局变量吗?
是的,当然。您应该获取整数的单位(即最小值的数字,例如4
中的1234
),提取它(例如获取123
)并继续递归直到数字为0
。
也许有些按位运算?
不,除法(/
)和模(%
)。
答案 1 :(得分:1)
我不会为您做家庭作业,但会给您一些提示:
n % 10
操作将为您提供整数以10为基数的最低有效位。n /= 10
最终始终为false(0
),并将以10为底的数字表示的最低有效位更改为第二最低有效数字。