幂函数的循环不变式

时间:2019-03-01 10:23:10

标签: loop-invariant

尝试使用以下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为奇数,则我不知道不知道如何证明。

希望你能帮助我。

0 个答案:

没有答案