不同语言的负数取余问题
问题的出现
偶然在leetcode上看到一道这样的题:
Given a 32-bit signed integer, reverse digits of an integer.
翻译成中文就是:
给定一个32位有符号整数,将整数由低位到高位反向输出,例:
输入:1230
返回:321
题目很简单,有很多种实现方式,大概十分钟左右就在脑海中想到了一个自认为最好的解法,之后用电脑实验:
int reverse_num(int x,int res)
{
if(!x) return res;
return reverse_num(x/10,(res*10+x%10));
}
int main()
{
int val=0;
val=reverse_num(-9870,val);
cout<
}
输出结果:
-789
解决!!其实用循环也可以高效地实现,为什么要用递归?因为递归总是能写出简洁优美的代码(其实是为了装X...)。
作为习惯,我再用python实现一遍,同样的代码结构:
def reverse(x,res):
if x==0:
return res
return reverse(x/10,(res*10+x%10))
def main