Algorithm 是不是完美的正方形?

Algorithm 是不是完美的正方形?,algorithm,perfect-square,Algorithm,Perfect Square,这是一个代码,用来检查一个数字是否是完美的正方形。它为什么有效 static bool IsSquare(int n) { int i = 1; for (; ; ) { if (n < 0) return false; if (n == 0) return true; n -= i; i += 2; } } static bool IsSqua

这是一个代码,用来检查一个数字是否是完美的正方形。它为什么有效

static bool IsSquare(int n)
{
    int i = 1;
    for (; ; )
    {
        if (n < 0)
            return false;
        if (n == 0)
            return true;
        n -= i;
        i += 2;
    }
}
static bool IsSquare(int n)
{
int i=1;
对于(;;)
{
if(n<0)
返回false;
如果(n==0)
返回true;
n-=i;
i+=2;
}
}

因为所有的完美平方都是连续奇数的和:

  • 1=1
  • 4=1+3
  • 9=1+3+5
  • 16=1+3+5+7
等等。您的程序尝试从
n
中减去连续的奇数,然后查看它是降到零还是变为负数


你可以用
{1,2,3,4,…}
的边画正方形来非正式地证明这一点,并观察到从正方形
k
构造正方形
k+1
需要添加
2k+1
单位正方形。

谢谢:)我从来都不知道这一点。@dasblinkenlight-我刚才看到了。。成功了@dasblinkenlight-是的,我们可以通过画正方形很容易地证明这一点。。这里有一段视频解释@user1386320:当然,你可以在学校学到这一点。每个国家的学校课程都不同,教师的适应也不同,所以这可能会带来厄运。