读书人

递归反转一个整数,该怎么处理

发布时间: 2012-04-18 15:01:59 作者: rapoo

递归反转一个整数
用循环或者字符串函数感觉比较简单、可是用递归就没什么好的思路啦

[解决办法]
的确有点问题,因为在没递归完之前是不好知道这个数有多少位的
用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)
[解决办法]
探讨

的确有点问题,因为在没递归完之前是不好知道这个数有多少位的
用static变量如何?很别扭,不过只想到这个……

C/C++ code


unsigned reverse(unsigned i)
{
unsigned last_digit;
if (i==0)
return 0;
last_digit=i%10;
wei……

[解决办法]
这个相当随意啊
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);} 

读书人网 >软件架构设计

热点推荐