我有以下问题(来自ProjectEuler.net - 问题14)
为正整数集定义以下迭代序列:
n -> n/2 (n is even)
n -> 3n + 1 (n is odd)
Run Code Online (Sandbox Code Playgroud)
使用上面的规则并从13开始,我们生成以下序列:
13 ? 40 ? 20 ? 10 ? 5 ? 16 ? 8 ? 4 ? 2 ? 1
Run Code Online (Sandbox Code Playgroud)
可以看出,该序列(从开始13和结束1)包含10个术语.虽然尚未证实(Collatz问题),但据认为所有起始数字都已完成1.
哪个起始编号低于一百万,产生最长的链?
注意:链条启动后,条款允许超过一百万.
我用了:
static int road (int n)
{
int road = 0;
while (n != 1)
{
if (n % 2 == 0)
n = n / 2;
else
n = 3 * n + 1;
road++;
}
return road;
}
static void Main(string[] args)
{
int max = 0, num = 0;
for (int i = 1; i < 1000000; i++)
{
if (road(i) > max)
{
max = road(i);
num = i;
}
}
Console.WriteLine(num);
}
Run Code Online (Sandbox Code Playgroud)
但是没有打印输出.