尝试使用以下Power算法的循环不变式证明正确性:
Power(x,n)
result <- 1
if n = 1
then return x
if n = 0
then return result
While n > 0
if n mod 2 = 1
do result <- result * x
n <- n/2(floor value)
x <- x*x
return result
我正在努力证明如果我将 k 表示为迭代计数器,则结果变量将返回正确答案,则每次迭代x等于x ^ 2 ^ k 并且 n 为n / 2 ^ k,因此匹配。 在最后一次迭代中n = 1,所以如果n不为奇数,则结果= 1,它将与x ^ 2 ^ k相乘,这是正确的答案,但如果在计算的中间n为奇数,则我不知道不知道如何证明。
希望你能帮助我。