问题:
我正在尝试编写一种递归方法,打印出大于或等于第一个数字且小于最后一个数字的所有数字。 我完成了编写一个递归方法来打印所有数字,或者低于最后一个数字。我不知道如何检查数字是否大于第一个数字。
示例:
对于 print(325648) 它将打印 5、6、4。
对于 print(237) 它将打印 3。
对于 print(925648) 它不会打印任何数字。
这是我的代码:
public static void print(int n) {
print(n,n%10);
}
private static void print(int n,int lastDigit) {
if(n==0)
return;
if(n%10<lastDigit)
System.out.println(n%10);
print(n/10,lastDigit);
}
该方法的要求:
- 不允许使用循环(或带有循环的方法)。
- 只允许使用一个递归转换。
- 号码的长度未知。
- 该方法可以改变数字,但在操作结束时数字应该与开始时相同。
请注意: 这不是家庭作业!我正在写这个方法作为我明天要讲的考试的练习。
最佳答案
这里的想法是递归除以 10,直到数字减少到它的第一个数字。在通过所有递归返回时,您将第一个数字作为返回值并很容易进行比较。
private static void print( int n ){
print( n/10, n%10 );
}
private static int print( int n, int ld ){
if( n < 10 ) return n;
int digit = n % 10;
int first = print( n/10, ld );
if( digit < ld && digit > first )
System.out.println( digit );
return first;
}
关于java - 打印大于或等于第一个数字且小于最后一个数字的所有数字的递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46139819/