使用递归查找整数中的最大数字

Ass*_*saf 0 java recursion

我有一个实践,他的任务是使用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);
}
Run Code Online (Sandbox Code Playgroud)

你可以看到它是完全错误的.

任何帮助都会很棒.谢谢

Aln*_*tak 7

这通过递归地比较最右边的数字和剩余数字的最高位(通过将原始数除以10获得的数字)来工作:

int maxDigit(int n) {
    n = Math.abs(n);   // make sure n is positive
    if (n > 0) {
        int digit = n % 10;
        int max = maxDigit(n / 10);
        return Math.max(digit, max);
    } else {
        return 0;
    } 
}
Run Code Online (Sandbox Code Playgroud)


Joa*_*son 6

最简单的基本情况是,如果n为0,则返回0.

public static int maxDigit(int n){
    if(n==0)                               // Base case: if n==0, return 0
        return 0;
    return Math.max(n%10, maxDigit(n/10)); // Return max of current digit and 
                                           // maxDigit of the rest 
}
Run Code Online (Sandbox Code Playgroud)

或者,更简洁;

public static int maxDigit(int n){
    return n==0 ? 0 : Math.max(n%10, maxDigit(n/10));
}
Run Code Online (Sandbox Code Playgroud)