Java 用归纳法证明了该递归算法的正确性

Java 用归纳法证明了该递归算法的正确性,java,recursion,induction,Java,Recursion,Induction,伙计们,我应该证明这段代码,它使用尾部递归来求和数字的平方。为n证明这一点≥ 1,sumsqr(n)=1^2+2^2+…n^2。我已经弄清了基本情况,但我仍停留在归纳阶段。任何提示或帮助都将不胜感激。正如您所证明的,它适用于基本情况。想象一下,它对n有效。假设它适用于n+1。因为它对n有效,如果n==0,我们得到所有的平方和。现在我们可以考虑为n+1调用的其他方法。它将是唯一的第一个,返回sumHelper(n,a+(n+1)^2)。 所有其他方法都将像在n中一样抛出。所以我们有a=平方和1到n

伙计们,我应该证明这段代码,它使用尾部递归来求和数字的平方。为n证明这一点≥ 1,sumsqr(n)=1^2+2^2+…n^2。我已经弄清了基本情况,但我仍停留在归纳阶段。任何提示或帮助都将不胜感激。

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

这是一个纯粹的数学问题。我认为这是离题的。是的,有代码,但代码只是一个数学算法的实现。我认为这可能更适合计算机科学堆栈交换。
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); 
}