【发布时间】:2016-10-26 15:51:16
【问题描述】:
我想计算有多少对自然数使得a2 + b2 = c2。作为我函数的输入,我有c。
我的想法是首先检查条件是否满足,如果不满足,我希望有一个循环迭代所需的表达式直到c。如果结果等于c 的平方,那么我想要count++。问题是为什么这不起作用?
添加了一些更正。
int sum(int c) {
int b=1;
int a=1;
int count=0;
int result;
if (a*a + b*b != c*c)
{
for (int i=1; i<=c; i++)
{
b=i;
result = a*a + b*b;
if (result == c*c)
count++;
}
a++;
}
else
count++;
return count;
}
问题是我仍然不明白为什么这不起作用。
我的第二个想法是使用 while 循环来处理它:
int sum(int c) {
int b=1;
int a=1;
int count=0;
int result;
if (a*a + b*b != c*c)
{
while(b<=c)
{
result = a*a + b*b;
if (result == c*c)
{count++;
b++;
}
else
b++;
}
a++;
}
else
count++;
return count;
}
也不能正常工作。
有人知道如何让它工作吗?这两个版本中的任何一个?也许是提示?
【问题讨论】:
-
-
既然您从未将
a的值从1更改为a*a,为什么还要浪费时间? -
您可以使用 debugger 解决此问题 - 逐步执行代码,查看变量,完成后您将了解一切是如何工作的。
-
请将内容存储在变量中。 aSquared = a * a; bSquared = b * b; cSquared = c*c; if(aSquared + bSquared != cSquared),可读性也会对其他人有所帮助.....
-
而且你的计数没有初始化为 0,所以当你计数++时它在做垃圾++
标签: c++ c loops if-statement for-loop