2 回答

慕沐林林
TA贡献2016条经验 获得超9个赞
完整的方法可能如下所示:
public int numberOfDigits(int number) {
if (number >= 10) {
return numberOfDigits(number / 10) + 1;
}
// base case: only one digit
return 1;
}
通过检查,如果我们传递一个两位数,该if语句将被命中,无论输入 / 10 的递归调用是什么,它都会返回加一。假设输入是42. 在这种情况下,它将返回numberOfDigits(42 / 10) + 1。我们知道numberOfDigits(4)返回 1,所以这将返回总共 2,这是正确的。
使用归纳推理,我们可以建立起来让自己相信任意数量的任意长度。
旁注:在我的旅行中,我经常看到使用if语句首先处理基本情况,默认情况下发生归纳情况。所以,我本来希望看到这段代码:
public int numberOfDigits(int number) {
if (number < 10) return 1;
return numberOfDigits(number / 10) + 1;
}
添加回答
举报
0/150
提交
取消