true/false功能如果存在总和



我想在存在这样的正整数ab时返回true的程序,使得a*a+b*b=n*n

我的代码是:

 bool c(int n){
    int b=1;
    int a=1;
    for (a=1; a<=n; a++) {
        for (b=a; b<=n; b++) {
            if (a*a + b*b == n*n) {
                return true;
            else
                return false;
        }
    }
}

但是,此代码不会返回我想要的内容。我该怎么办才能解决?

请所有人在投票之前,请说明这个问题可以改善的。我已经注意到,有时人们倾向于在没有任何解释的情况下放弃投票问题。

您的程序不编译。您可能打算写这个:

bool c(int n) {
  int b = 1;
  int a = 1;
  for (a = 1; a <= n; a++) {
    for (b = a; b <= n; b++) {
      if (a*a + b*b == n*n)
        return true;
      else
        return false;
    }
  }
}

哪个编译,但这是错误的。

,但您可能想要这个:

bool myfunction(int n) {
  int b = 1;
  int a = 1;
  for (a = 1; a <= n; a++) {
    for (b = a; b <= n; b++) {
      if (a*a + b*b == n*n)
        return true;
    }
  }
  return false;
}
int main() {
  if (myfunction(5)) {
    printf("myfunction(5) returned truen");
  }
}
bool c(int n){
int b=1;
int a=1;
for (a=1; a<=n; a++) {
    for (b=a; b<=n; b++) {
        if (a*a + b*b == n*n) {
            return true;
        else
            return false;
    }
}
}

您编写的代码将检查A = 1和B = 1,并且评估为1 1等于2。

因此,您的代码所做的一切只是比较2至n。

return false语句应在两个for循环之外。这意味着,对于A和B的所有组合,都没有一对(A,B),因此A a b b = n*n。

相关内容

最新更新