ここにいる何人かの人々の助けを借りて、私はコラッツ関数で初期値1から1000の範囲の停止値を見つけることができました。Collatz関数 (私の間違いは、forループでcの代わりにsと言う新しい変数を使用し、c = sにすることでソートされました)。
現在、これらの初期値(1〜1000)の最大停止値(カウント)を追跡し、最後に出力するコードを作成しようとしています。彼らがこれを行う方法を知っているなら、誰かが私にいくつかの指針を与えることができますか?
ありがとう。
ここにいる何人かの人々の助けを借りて、私はコラッツ関数で初期値1から1000の範囲の停止値を見つけることができました。Collatz関数 (私の間違いは、forループでcの代わりにsと言う新しい変数を使用し、c = sにすることでソートされました)。
現在、これらの初期値(1〜1000)の最大停止値(カウント)を追跡し、最後に出力するコードを作成しようとしています。彼らがこれを行う方法を知っているなら、誰かが私にいくつかの指針を与えることができますか?
ありがとう。
ループを最初に実行する前に、最大値をゼロに定義します。次に、停止値が現在の最大値より大きいかどうかを確認します。大きい場合は、現在の最大値を現在の停止に設定します。停止値を見つけるたびにこれを繰り返します。
#include <iostream>
using namespace std;
int main()
{
long max = 0;
for(long c=2, c<=1000; c++) // define stopping value as 0 for c=1 elsewhere
{
long count=0;
while (c!=1)
{
if((c%2)==0)
{
c/=2;
}
else
{
c=3*c+1;
}
count ++;
}
if ( count > max ) max = count;
cout << "The stopping value for " << c << " is " << count << endl;
}
cout << "The max stopping value is " << max << endl;
return 0;
}