1 def recmin(A):
2 if len(A) == 1:
3 return A[0]
4 else:
5 m = len(A) // 2
6 min1 = recmin(A[0..m-1])
7 min2 = recmin(A[m..len(A)-1])
8 return min(min1, min2)
我试图证明这个函数的部分正确性,我想出了p(i)
的谓词:对于数组A=[0..i]
,len(A)=i+1
和recmin [A]被调用,然后这个调用终止并返回一些t,使0<=t<=i A[t]
是最小值
但是我觉得这个谓词是错误的,我怎么能证明A[0]
是最小值的后置条件