使用归纳证明了这种递归算法的正确性

时间:2018-05-15 15:07:34

标签: java recursion induction

int sumHelper(int n, int a) {
   if (n==0) return a;
   else return sumHelper(n-1, a + n*n);
}

int sumSqr(int n) { 
    return sumHelper(n, 0); 
}

伙计们,我应该证明这段代码使用尾递归来总结数字的平方。即,证明对于n≥1,sumsqr(n)= 1 ^ 2 + 2 ^ 2 + ... n ^ 2。我已经找到了基本情况,但我陷入了诱导步骤。任何提示或帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

正如你所证明的那样,它适用于基础案例。想象一下,它适用于n。假设它适用于n + 1。因为它适用于n,如果n == 0,我们得到所有的平方和。现在我们可以考虑为n + 1调用的其他方法。它只是第一个,返回sumHelper(n,a +(n + 1)^ 2)。 所有其他方法将像n一样被抛出。所以我们有一个=平方和1到n和(n + 1)^ 2,所以它显然可以像你预测的那样工作。