我正在研究循环不变量,我在线性搜索算法的不变量方面遇到了麻烦。
Inpput: A[1 ... n] of integers, k an integer value
Output: true if k belongs to A[1 ... n] false otherwise
LSearch(A,k)
i := 1
found := false
WHILE i<=n AND found=false DO
IF A[i] = k THEN
found := true
i:=i+1
return found
我选择的断言是:
在第一次迭代之前,它保持不变,因为此时A [1]中的单个元素被发现并被初始化为假。
循环之后我可以是平等的
我:= 1
found:= falseto n和/或found可以为true(while条件),因此断言保持不变,考虑到i <= n。
你认为这可能是正确的吗?
答案 0 :(得分:-1)
断言是正确的,但也没用。 found是一个布尔值,无论A的属性如何,都将包含True或False。这无助于证明算法的正确性。
这是一个多项选择题吗?其他选择是什么?