我目前只能停留在我不太了解的一行代码上。
因此,我正在阅读本书中的示例代码,“程序”之一使用递归来确定整数n中的位数。我被困住并且不完全理解的一行代码是:

if (number >= 10) {
    return numberOfDigits(number / 10) + 1;


例如,这使数字42返回2。但是该函数究竟如何返回2? 42除以10等于4,2或4。加1为5,那么它如何返回2?

最佳答案

递归是一种获取方法的调用以执行某些工作,同时将其余工作推迟到进行另一次递归调用的方法。在此,“数字位数”递归方法表示数字中的位数等于最后一位的1加上最后一位删除后剩余的位数。

return语句中,+ 1计算数字中的最后一位,而number / 10执行截断整数除法以删除最后一位。递归调用对数字中的数字进行计数,最后一位被删除。

当数字为一位数字(不大于或等于10)时,未显示的是递归的基本情况。那只是1位。值4未计入计算中。该方法有效地对数字进行一次计数,直到没有剩余的数字为止。每位数有一个递归方法调用。

关于java - 使用递归确定位数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52631055/

10-10 09:15
查看更多