我目前只能停留在我不太了解的一行代码上。
因此,我正在阅读本书中的示例代码,“程序”之一使用递归来确定整数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/