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。我已经找到了基本情况,但我陷入了诱导步骤。任何提示或帮助将不胜感激。
答案 0 :(得分:0)
正如你所证明的那样,它适用于基础案例。想象一下,它适用于n。假设它适用于n + 1。因为它适用于n,如果n == 0,我们得到所有的平方和。现在我们可以考虑为n + 1调用的其他方法。它只是第一个,返回sumHelper(n,a +(n + 1)^ 2)。 所有其他方法将像n一样被抛出。所以我们有一个=平方和1到n和(n + 1)^ 2,所以它显然可以像你预测的那样工作。