私は新しいコーディングをしました。変数 'sum'をより大きくすることが、より大きく、nを1/nの合計で(mと等しくない)mより大きくすることです。これはなぜinfinteループを引き起こしますか?
私は同じ問題を2回解決する必要があります(1つはforループを使用し、もう1つはwhileループを使用します)。しかし、両方の方法は終わりのループで終わります。
「< =」を「<」に置き換えると、コードが正常に機能しています。しかし、それは
私を助けることができますか?あなたは整数型で動作するのでタイプlong
と値> 1
を持つのn
された状態で
#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;
}
[これはあなたのための答えを提供するのに役立つかもしれません](http://stackoverflow.com/questions/3602827/what-is-the-behavior-of-integer-division-in-c) – Obicere
デバッガは何を示しましたか単一のコードをステップ実行するとき? –
あなたが思ったことをやることが止まる正確なポイントを見つけてください。すべての変数の実際の値を期待値と比較します。いくつかの 'std :: cout'でもこれを行うことができますが、デバッガの使い方を学ぶことは長期的にはより良いアイデアです。いずれにせよ、〜20行のコードではそれほど難しいことではありません。あなたはすぐに正確な場所を見つけるでしょう。 –