在这里的一些人的帮助下,我设法在 Collatz 函数中找到了初始值 1 到 1000 范围内的停止值。Collatz 函数 (我的错误是通过在 for 循环中使用新变量 say s 而不是 c 然后让 c=s 来排序的)。
我现在正在尝试生成代码来跟踪这些初始值(1 到 1000)的最大停止值(计数),然后在最后输出。如果他们知道如何做到这一点,谁能给我一些指示?
谢谢。
在这里的一些人的帮助下,我设法在 Collatz 函数中找到了初始值 1 到 1000 范围内的停止值。Collatz 函数 (我的错误是通过在 for 循环中使用新变量 say s 而不是 c 然后让 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;
}