Java 方法从整数中查找最小数

Java 方法从整数中查找最小数,java,recursion,Java,Recursion,因此,我需要开发一种方法来查找整数中的最小数字。publicstaticintfind(intnum){ 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; } 如果(数值

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

publicstaticintfind(intnum){
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;
}
如果(数值<10){ 返回num; } int d=num%10; int pmin=查找(num/10);
return(d这是我的实现

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

你可以通过long来改变int…

我个人认为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));
}
私有字符串findsmalest(字符串s){

如果(s.length()如果您有兴趣自己学习如何解决这个问题(您应该这样做),我将尝试按照以下步骤进行操作

  • 在头脑中慢慢地做这个过程——或者更好,把步骤写在纸上!注意你所做的每一步

    第一步可能是:看第一个数字

  • 考虑一下您创建的步骤。是否有部分似乎在重复它们自己?这些部分很可能是您的递归函数

  • 将步骤重写为递归函数(用简单的英语)

  • 将这些步骤翻译成您的编程语言;在本例中是Java

  • 如果您愿意,您甚至可以将代码中的简单英语步骤作为注释保留在每行后面,这样每个人都可以轻松地按照您的代码进行操作

    您还可以编写:

    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;
    }
    
    public static int minDigit(int n,int min){
    如果(n!=0){
    如果(n%10
    我想我可以做mod 10然后比较?@CLearner是的,你可以,这是正确的方法。现在你的基本情况和递归步骤是什么?作为一种观点,我认为你不应该接受答案,直到你得到一个正确的答案并解释了两件事:尾部递归(尽管Java仍然有,但只是在原则上学习这个重要的递归概念)对数递归深度。在Java中使用递归做这件事是完全没有意义的,除了学习这两件事。非常感谢。这里的pmin是什么?上一个min,即xyz中的z,因为递归调用的下一个min将来自xyz。这对数字0失败,假定一个工作解决方案应该为此返回0。非常感谢您的支持在问我怎么做的时候,我想到了mod 10,然后我就不知道如何比较它,得到最小的数字