0

ここにいる何人かの人々の助けを借りて、私はコラッツ関数で初期値1から1000の範囲の停止値を見つけることができました。Collat​​z関数 (私の間違いは、forループでcの代わりにsと言う新しい変数を使用し、c = sにすることでソートされました)。

現在、これらの初期値(1〜1000)の最大停止値(カウント)を追跡し、最後に出力するコードを作成しようとしています。彼らがこれを行う方法を知っているなら、誰かが私にいくつかの指針を与えることができますか?

ありがとう。

4

1 に答える 1

0

ループを最初に実行する前に、最大値をゼロに定義します。次に、停止値が現在の最大値より大きいかどうかを確認します。大きい場合は、現在の最大値を現在の停止に設定します。停止値を見つけるたびにこれを繰り返します。

#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;
}
于 2012-11-19T09:14:34.427 に答える