【问题标题】:Can someone explain me this recursive method?有人可以解释一下这种递归方法吗?
【发布时间】:2016-04-19 12:01:16
【问题描述】:

此代码计算您输入的数字 7。这是代码方法:

    public static int count7(int n) {
    if (n == 0) {
        return 0;
    }
    else if (n % 10 == 7) {
        return 1  + count7 (n/10);
    }
    else {
        return count7(n/10);
    }
}

else-if 语句和 else 有什么作用?非常感谢。

【问题讨论】:

  • n%10 == 7 当数字的最后一位为 7 时返回 true。因此,如果最后一位数字为 7,则加 1,否则不加 1...
  • 你认为 if-else 或 else-if 有什么作用?
  • 使用调试器并观察代码流。万一您不知道如何使用它:无论如何,如果您想学习编码,就必须学习它。并且有很多关于该主题的可用资源
  • 计算小数中7的位数。

标签: java algorithm recursion logic


【解决方案1】:
if (n == 0) {
    return 0;

0中没有7,所以返回0。

} else if (n % 10 == 7) {

检查数字的最低有效数字是否为 7。如果是这种情况,则 7 的总数为 1 + 通过删除该数字(将数字除以 10)获得的数字中 7 的数量:

     return 1  + count7 (n/10);

} else {

如果最低位不是7,则7的个数就是n/10中7的个数:

    return count7(n/10);
}

【讨论】:

【解决方案2】:

if (n % 10 == 7) 如果余数是 7 让我们举个例子 n=17 所以 17%10 你会得到 7 所以加 1 表示你已经找到了 7 如果你还没有找到然后转到 else 部分通过划分时间调用假设这次 n=28 显然这个数字中没有 7 所以它将转到 else if 条件并且它将失败它将转到 else 部分并且它将通过划分 n 来调用该方法到 10 进行下一次迭代。

【讨论】:

  • 这是我想看到的答案。其他人只是在解释代码的流程,而不是逻辑。谢谢兄弟。
【解决方案3】:

这是一种递归方法

第一个if基本情况,即如果数字为0,则返回0。

else if检查数字是否为7。如果是,则使用相同的方法得到剩余数字的答案(是否有任何7),将其加1,并返回值。

最后一个else只是删除一个数字,并调用剩余数字的方法。

【讨论】:

    【解决方案4】:

    此方法计算给定数字中数字 7 的总数。

    n % 10 == 7 检查最低有效位,如果等于 7,则将总和加 1。

    在任何情况下,该算法通过采用n / 10 继续处理其他数字,这实际上删除了最低有效数字,然后递归调用该方法。由于每次调用该数字以 1 位递减,并且停止触发器 n == 0 使该方法最终停止,因此最终返回的数字计算初始数字中的 7。

    例子

    count7(172) = 0 + count7(17) = 0 + 1 + count7(1) = 0 + 1 + 0 = 1
    

    【讨论】:

      【解决方案5】:

      该函数仅计算数字 7 在任何给定非负整数中出现的总数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多