我应该通过归纳来证明一个算法,并且对于所有 n >= 0 ,它返回 3 n - 2 n 。这是用 Eiffel 编写的算法。
P(n:INTEGER):INTEGER;
do
if n <= 1 then
Result := n
else
Result := 5*P(n-1) - 6*P(n-2)
end
end
我的理解是,你分三步证明。基本步骤、归纳假设和完整性证明。这就是我目前所拥有的。
基础:
P(0) 返回 0,并且 3 0 - 2 0 = 0。
P(1) 返回 1,并且 3 1 - 2 1 = 1。
归纳假设:
假设 P(k)对于 0 <= k < n返回 3 k - 2 k 。
完整性证明:
对于 n,P(n) 返回 5(P(n-1)) - 6(P(n-2))
5(P(n-1)) - 6(P(n-2))
5(3 n-1 - 2 n-1 ) - 6(3 n-2 - 2 n-2 ) <- 基于归纳假设
这是我卡住的部分。我到底应该如何将其减少到看起来像 3 n - 2 n?