从整数中查找最小数字的方法

时间:2014-10-20 17:37:31

标签: java recursion

所以我需要开发一种方法来查找整数中的最小数字。

5 个答案:

答案 0 :(得分:2)

这是我的实施

public int find(int n){
    if(n < 10) return n;
    return Math.min(n%10, find(n/10));
}

您可以通过long ...

更改int

答案 1 :(得分:1)

如果你有兴趣学习如何自己解决这个问题(你应该这样做),我会尝试按照这些步骤进行。

  1. 慢慢地 - 甚至更好地 - 在纸上写下这些步骤!注意你采取的每一步。

    Step one may be: look at the first digit

  2. 考虑您创建的步骤。是否有部分似乎在重复?这些部分可能是你的递归函数。

  3. 将步骤重写为递归函数(简单英文)

  4. 将步骤翻译成您的编程语言;在这种情况下,Java。

  5. 如果您愿意,您甚至可以在每行后面的代码中留下简单的英语步骤作为评论,这样每个人都可以轻松地按照您的代码

答案 2 :(得分:0)

public static int find(int num) {
    if(num < 10){
        return num;
    }
    int d = num % 10;
    int pmin = find(num / 10);
    return (d <= pmin) ? d : pmin;
}

答案 3 :(得分:0)

我个人认为for循环比递归函数更快更容易。但是对于递归或for循环,你需要迭代一些东西。最简单的方法是将数字转换为字符串,然后在需要的比较中迭代它。

在你的主要:

int i = 578329;
String s = Integer.toString(i);
s = FindSmallest(s);

调用该函数:

private String FindSmallest(String s){
    if(s.length() <= 1)
        return s;
    String sFirstChar = s.substring(0,1);
    String sSecondChar = s.substring(1,2);
    int iFirst = Integer.parseInt(sFirstChar);
    int iSecond = Integer.parseInt(sSecondChar);

    if(iFirst < iSecond)
        return FindSmallest( sFirstChar + s.substring(2));
    else
        return FindSmallest(sSecondChar + s.substring(2));
}

答案 4 :(得分:0)

你也可以写:

public static int minDigit(int n, int min){
    if(n!=0)    {
        if(n%10 < min) {
            min = n%10;
        }
        return minDigit(n/10, min);
    }
    return min;
}