【发布时间】:2015-11-06 00:48:55
【问题描述】:
函数递归查找并返回具有整数元素的数组中的最小元素
Min(A, b, e)
if (b=e)
return A[b]
m = (b+e)/2 // floor is taken
x = Min(A, b, m)
y = Min(A, m +1, e)
If(x < y)
return x
else
return y
我的前提是:b和e都是大于零的整数
我的后置条件是:返回一个整数 x 或 y(不确定)
那么我如何通过证明前后条件是归纳的来证明这是正确的
对不起格式,新的。
【问题讨论】:
-
你有按照你的方式编写你的任务吗?分治法在这里没有多大意义,因为无论如何您都必须检查数组元素的每个元素一次,因此可以应用更简单的尾递归方案(如
def fun MyMin ( A, idxcur ) = return (idxcur == 0) ? A[idxcur] : min ( MyMin ( A, idxcur-1), A A[idxcur] );)
标签: computer-science proof correctness proof-of-correctness