递归反转一个整数
用循环或者字符串函数感觉比较简单、可是用递归就没什么好的思路啦
[解决办法]
的确有点问题,因为在没递归完之前是不好知道这个数有多少位的
用static变量如何?很别扭,不过只想到这个……
- C/C++ code
static int weight=-1;unsigned reverse(unsigned i){ unsigned last_digit; if (i==0) return 0; last_digit=i%10; weight++; return reverse(i/10)+last_digit*pow10(weight); //递归结束时,weight的值就是原来输入的i的位数-1。假设pow10(x)返回10^x,就实现一下这个函数就好
[解决办法]
多返回一个参数就可以了
- C/C++ code
int reverse(int n, int *times = 0) { if (n < 10) { if (times) *times = 10; return n; } int a = n % 10; int t; int c = reverse(n / 10, &t); int res = a * t + c; if (times) *times = t * 10; return res;}
[解决办法]
定义一个辅助函数。
- Python code
def reverse_helper(n, v): if n<10: return v*10+n else: return reverse_helper(n/10, v*10+n%10)def reverse(n): return reverse_helper(n, 0)
[解决办法]
[解决办法]
这个相当随意啊
- C/C++ code
#include<iostream>using namespace std;void reverse(int n){ if(n==0)return; else { int num=n%10; cout<<num<<" ";//也可一用数组处理,关键看你目的是什么 reverse(n/10); }}int main(){ int n; cin>>n; reverse(n);}