我是编码的新手,我的任务是通过将1 / n加起来增加'n'来使变量'sum'大于大于(不等于)m。
我需要解决两次相同的问题(一个使用for循环,一个使用while循环)。但两种方式都以infinte循环结束。
当我将“< =”替换为“<”时,我的代码工作正常。但是那个
有人可以帮助我吗?
#include <iostream>
using namespace std;
int main () {
unsigned int m = 1;
double sum = 0;
long n;
n = 1;
while (sum <= m) //THIS LINE
{
double sumsum = 1/n;
sum += sumsum;
n++;
}
cout << "n = " << n << endl ;
cout << "sum = " << sum << endl ;
return 0;
}
答案 0 :(得分:0)
1/n
的{{1}}类型为n
并且值为long
的展示> 1
将始终产生0
,因为您使用整数类型进行操作。因此,sum
将在第一次运行时被分配1
,但永远不会达到值> 1
,因为总是会0
添加{。}}。
将您的代码更改为
double sumsum = 1.0/n;
它应该有效。请注意1.0
强制使用浮点运算。