在循环后证明任何n等于1,即使n = n / 2和奇数n = n + 1

时间:2015-02-17 00:15:25

标签: algorithm loops discrete-mathematics

假设我们有一个整数n≥1。 在循环内部,而n大于1.如果n是偶数,则n = n / 2.如果n是奇数,则n = n + 1.否则,算法将退出循环并返回"成功& #34;

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

1 个答案:

答案 0 :(得分:0)

分裂问题3例。

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

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

3)如果n> 1和n是奇数。我们可以写n = 2 * k + 1.在下一次迭代之后我们得到n = 2 * k + 2.经过两次迭代后我们得到n = k + 1.我们知道k + 1 < 2 * k + 1。

对于案例1)我们已经完成,对于案例2)和3)我们将问题减少到更小的问题。

你可以从中进行锻炼诱导。

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