所以我需要开发一种方法来查找整数中的最小数字。
答案 0 :(得分:2)
这是我的实施
public int find(int n){
if(n < 10) return n;
return Math.min(n%10, find(n/10));
}
您可以通过long ...
更改int答案 1 :(得分:1)
如果你有兴趣学习如何自己解决这个问题(你应该这样做),我会尝试按照这些步骤进行。
慢慢地 - 甚至更好地 - 在纸上写下这些步骤!注意你采取的每一步。
Step one may be: look at the first digit
考虑您创建的步骤。是否有部分似乎在重复?这些部分可能是你的递归函数。
将步骤重写为递归函数(简单英文)
将步骤翻译成您的编程语言;在这种情况下,Java。
如果您愿意,您甚至可以在每行后面的代码中留下简单的英语步骤作为评论,这样每个人都可以轻松地按照您的代码
答案 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;
}