0
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 语句之类的东西。关于如何开始的任何想法?:(我不明白...

4

3 回答 3

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);
}
于 2013-05-29T20:07:20.193 回答
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; 
    }
于 2013-05-26T22:13:35.473 回答
0

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

然后删除单位 - number / 10

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

f.printReverseDigits( int num )
{
  print( "%d", num % 10 );
  num /= 10;
  if( num )
  {
    printReverseDigits( num );
  }
}
于 2013-05-26T22:24:40.720 回答