小编典典

完美的正方形与否?

algorithm

这是用于检查数字是否为正整数的代码。为什么行得通?

static bool IsSquare(int n)
{
    int i = 1;
    for (; ; )
    {
        if (n < 0)
            return false;
        if (n == 0)
            return true;
        n -= i;
        i += 2;
    }
}

阅读 217

收藏
2020-07-28

共1个答案

小编典典

因为所有理想平方都是连续奇数的和:

  • 1 = 1
  • 4 = 1 + 3
  • 9 = 1 + 3 + 5
  • 16 = 1 + 3 + 5 + 7

等等。您的程序尝试从中减去连续的奇数n,然后看它是否降为零或变为负数。

您可以通过绘制带有边的正方形作为非正式证明,{1,2,3,4,...}并观察到k+1从正方形构建正方形k需要添加2k+1单位正方形。

2020-07-28