反转数字的递归方法?

时间:2013-05-26 22:04:31

标签: recursion numbers integer reverse digits

public void printReverseDigits( int input )
     

以相反的顺序打印输入整数中的数字。你可以   假设输入始终大于0.例如:

> RecursionFun f = new RecursionFun()
> f.printReverseDigits( 12345 )
54321
> f.printReverseDigits( 20 )
02
> f.printReverseDigits( 404 )
404
> f.printReverseDigits( 1 )
1

我甚至不知道从哪里开始^。我们不能使用循环或任何类似的东西......只有递归,if语句,类似的东西。 关于如何开始的任何想法? :(我不明白......

3 个答案:

答案 0 :(得分:0)

如果已知位数将很容易,如果不知道你可以通过查看数字是否小于9,然后是99然后是999来检查它,依此类推。 如果数字是404,if(input<999)将返回true,那么我们知道它是三位数。

...in a loop for number of digits....
digit[i] = input % 10;
input = input / 10;  

然后你可以反过来组合数字并返回它。

用于递归:

int printReverseDigits(int input)
    {          
        int digit, new;
        if(!input) return 0;
        digit=input%10;
        new=printReverseDigits(input/10);
        cout<<digit; 
        return new+digit; 
    }

答案 1 :(得分:0)

您需要打印单位 - 数字%10

然后删除单位 - 数字/ 10

如果数字非0 继续使用递归而不是循环

f.printReverseDigits( int num )
{
  print( "%d", num % 10 );
  num /= 10;
  if( num )
  {
    printReverseDigits( num );
  }
}

答案 2 :(得分:0)

非常简单。这是一个c ++解决方案。

#include <iostream>
using namespace std;

void recursivePrintVals(const int someNum) {
    if(!someNum) return;
    cout << someNum % 10;
    recursivePrintVals(someNum/10);
}

int main() {
    recursivePrintVals(123456789);
}