【发布时间】:2019-01-24 18:01:47
【问题描述】:
我在Java中的这个练习有问题,我不明白如何在Java中证明这个sum方法
这是我做的:
P(0) : If r=0 and i=0 => r=0+a[0]
p(i+1) : r'= r + a[i] and i'=i+1
r'=r + a[i] + a[i+1]
public static int sum(int[] a) {
int r = 0;
int i = 0;
while (i < a.length) {
r = r + a[i];
i = i + 1;
}
return r;
}
【问题讨论】:
-
根据您的公式,您应该返回
r + a[i] + a[i+1] -
@DWuest:测试运行永远不是证明。
-
作为提示,考虑一下 P(n) 的 n 应该是多少。我建议它是数组的长度——在这种情况下,您的 P(0) 断言不成立,因为
a[0]未定义(在 Java 中它是 IndexOutOfBoundsException)。然后对于 P(n+1),您需要对循环在 P(n) 中的作用与在 P(n+1) 中的作用进行断言。在这两个循环中i的可能值是多少?它们如何相互映射?
标签: java algorithm correctness