【发布时间】:2023-04-07 07:06:01
【问题描述】:
我有一个练习,他的任务是在 java 中使用递归找到整数中的最大数字。例如,对于数字 13441,将返回数字“4”。
我已经尝试了一天,但没有任何效果。
我认为可以工作的是以下代码,但我无法完全理解它的“基本情况”:
public static int maxDigit(int n) {
int max;
if (n/100==0) {
if (n%10>(n/10)%10) {
max=n%10;
}
else
max=(n/10)%10;
}
else if (n%10>n%100)
max=n%10;
else
max=n%100;
return maxDigit(n/10);
}
如您所见,这是完全错误的。
任何帮助都会很棒。谢谢
【问题讨论】:
-
@Baadshah:我不明白为什么这个问题有必要。代码完全可读,没有。
-
要改变的一件事是您返回的内容。您应该返回较大的
max和maxDigit(n/10) -
这是家庭作业还是什么?我想不出一个更糟糕的地方来使用递归。
-
您现在的代码将进入无限循环。没有从递归中出来。
-
@Assaf 在某些语言(即函数式语言)中递归将是解决此问题的自然方法。