【问题标题】:Proving that any n equals to 1 after looping even n = n/2 and odd n = n + 1证明在偶数 n = n/2 和奇数 n = n + 1 循环后任何 n 等于 1
【发布时间】:2015-02-17 00:15:25
【问题描述】:

假设我们有一个整数 n ≥ 1。 在循环中,while n 大于 1。如果 n 是偶数,则 n = n / 2。如果 n 是奇数,则 n = n + 1。否则,算法将退出循环并返回“成功”。

我怎样才能从归纳中证明这个问题。我想使用归纳法来假设 k ≥ 1。但是,在归纳步骤中我不能假设的条件是什么?

【问题讨论】:

  • 如果你真的想使用归纳法,你应该看看strong mathematical induction 标准让它为真 k,证明它是真的 k+1 在这里不起作用。 (否则会很痛苦)
  • 提示:在 2 次迭代之后,数字是否比开始时更远离 1?甚至相同的距离?如果有,什么时候?

标签: algorithm loops discrete-mathematics


【解决方案1】:

3 种情况下的拆分问题。

1) 如果 n = 1,我们就完成了。

2) 如果 n > 1 并且 n 是偶数。下一个数字将是 n / 2,如果 n 大于 1,它肯定小于 n。

3) 如果 n > 1 并且 n 是奇数。我们可以写成 n = 2 * k + 1。在下一次迭代之后,我们将得到 n = 2 * k + 2。在两次迭代之后,我们将得到 n = k + 1。我们知道 k + 1

对于案例 1) 我们已经完成,对于案例 2) 和 3) 我们将问题简化为更小的问题。

你可以从中锻炼感应。

如果需要,我可以编写完整的归纳。

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 2023-03-08
    • 2015-10-08
    • 2015-08-13
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 2012-07-30
    • 2018-09-01
    相关资源
    最近更新 更多