我最近开始阅读一本关于数据结构的书,它首先介绍了算法。在一个练习中,它要求通过归纳和循环不变来证明算法。伪代码中的算法是:
Algorithm DEC2BIN(int n, int[] b)
Input: int n, array b
Output: b[i] contains the i-th bit of n's binary representation.
1: int x=n, k=0;
2:while(x>0){
3: b[k]=x%2;
4: x/=2;
5: k++;
6:}
en of DEC2BIN
我说:
令P(n)为语句“b包含n的二进制表示”。
对于n = 1: 很明显,b = [1]所以,P(1)。
设P(N)。如何显示P(n + 1)?
答案 0 :(得分:0)
通过提供适当的循环不变性开始。例如。
“循环运行
k
后,b将包含k
”二进制表示的第一个n
数字。
Horner's method和Positional Systems应该用来证明从上面的循环不变量开始的语句。