【问题标题】:proving the correctness of this recursive algorithm using induction使用归纳法证明此递归算法的正确性
【发布时间】:2018-05-15 15:07:33
【问题描述】:
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。我已经弄清楚了基本情况,但我陷入了归纳步骤。任何提示或帮助将不胜感激。

【问题讨论】:

  • 这是一个纯数学问题。我会将其投票为题外话。是的,有代码,但代码只是数学算法的实现。
  • 我认为这可能更适合计算机科学堆栈交换之一。

标签: java recursion induction


【解决方案1】:

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

【讨论】:

    最近更新 更多