java - 使用递归来确定位数

标签 java recursion integer digits

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

相关文章:

java - 使用 HttpClient 将 URL 中的 JSON 查询字符串发送到 Web 服务 (Java)

templates - 如何使用 meteor 模板创建类似目录的结构?

c++ - 值是如何返回的? - 递归算法

java - 在 Java 中比较整数

java - 无法解析符号 'v' 和预期的 ) 和 ;

java - 创建对象实例而不调用父类(super class)构造函数

java - 整数数组列表到字符串的转换

c++ - "a declaration shadows a parameter"是什么意思?

java - 并发 - 数据库访问

c++ - 还有哪些其他语言可以通过指针操作来创建数组?