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语句,类似的东西。 关于如何开始的任何想法? :(我不明白......
答案 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);
}