这是一个检查数字是否完美正方形的代码。它为什么有效?
static bool IsSquare(int n)
{
int i = 1;
for (; ; )
{
if (n < 0)
return false;
if (n == 0)
return true;
n -= i;
i += 2;
}
}
答案 0 :(得分:44)
因为所有完美的正方形都是连续奇数的总和:
等等。您的程序会尝试从n
中减去连续的奇数,并查看它是否降为零或为负数。
您可以通过绘制{1,2,3,4,...}
边的正方形来进行非正式证明,并观察从正方形k+1
构建正方形k
需要添加2k+1
单位正方形。