【发布时间】:2018-02-18 18:11:25
【问题描述】:
问题:
我正在尝试编写一个递归方法来打印大于或大于第一个数字且小于最后一个数字的数字中的所有数字。 我完成了编写一个递归方法来打印所有小于或低于最后一位数字的数字。我不知道如何检查数字是否比第一个数字大。
示例:
对于 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);
}
此方法的要求:
- 不允许使用循环(或带有循环的方法)。
- 只允许使用一个递归转换。
- 号码的长度未知。
- 该方法可以更改数字,但在操作结束时数字应与开始时相同。
请注意: 这不是家庭作业!我正在写这个方法作为我明天要讨论的考试的练习。
【问题讨论】:
-
您可以使用公式 - dig = Math.floor(Math.log10(n)) + 1 找出否。位数。然后将第一个数字除以 dig-1。
-
我认为这个函数使用了循环。
-
请举一两个例子以便于理解
-
没有。它是一个对数函数。可以认为与计算否相同。使用递归的位数。
-
你提到了 3 个例子,我认为第二个例子的结果是错误的