我目前陷入了一行我不完全理解的代码。 因此,我正在阅读书中的示例代码,其中一个“程序”使用递归来确定整数 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/