这是一个我想要证明其核心性的功能(用OCaml编写):
let rec pow ak a k = if k=0 then ak
else if (k mod 2)=1 then pow (ak*a) (a*a) (k/2)
else pow ak (a*a) (k/2);;
其规格:
For integers ak, a>0, k>=0 pow returns ak*(a^k).
我知道我需要证明两件事 - 函数终止,并返回假定输入的正确结果。问题是我没有看到很多这样的证据,我唯一知道的是我需要使用归纳法。我应该如何处理这样的问题?
答案 0 :(得分:1)
证明基本情况。然后证明,对于a+1
和k+1
,该陈述是正确的,假设它适用于a
和k
。