当我调用此方法时,我正试图找到自然数的最小数字。我必须使用递归。我哪里错了? (我也想使用我的通用代码结构)
private static int minDigit(NaturalNumber n) {
int min = 9;
if (!n.isZero()) {
int k = n.divideBy10();
k = minDigit(n);
if (k < min) {
min = k;
}
}
return min;
}
答案 0 :(得分:0)
为了使递归起作用,需要在较小版本的问题上进行递归调用,以便最终它变得如此之小以至于答案是显而易见的。但是你的代码使用相同的数字n
进行递归调用,调用它,因此从不对该状态进行任何进展。
此外,如果n
为零,那么最小数字 0是否应该<?如果n
永远不能为0,那你为什么要测试呢?