在这里的一些人的帮助下,我设法在Collatz功能中找到了一系列初始值1到1000的停止值。 Collatz function (我的错误是通过在for循环中使用一个新变量而不是c来排序,然后让c = s)。
我现在正在尝试生成代码以跟踪这些初始值(1到1000)的最大停止值(计数),然后在结束时输出它。如果他们知道怎么做,有人可以给我一些指示吗?
感谢。
答案 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;
}