特定示例的最大值(Collat​​z函数)

时间:2012-11-19 08:37:43

标签: c++ math

在这里的一些人的帮助下,我设法在Collat​​z功能中找到了一系列初始值1到1000的停止值。 Collatz function (我的错误是通过在for循环中使用一个新变量而不是c来排序,然后让c = s)。

我现在正在尝试生成代码以跟踪这些初始值(1到1000)的最大停止值(计数),然后在结束时输出它。如果他们知道怎么做,有人可以给我一些指示吗?

感谢。

1 个答案:

答案 0 :(得分: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;
}