我正在尝试创建一些代码,当给定一个起始数字时,它会尝试找到相应的 collatz 链的长度。
我希望递归地做到这一点,这就是我到目前为止所拥有的:
#include stdio.h
int collatz(int number, int count)
{
if(number == 1)
{
return count;
}
if(number%2==0)
{
number = number/2;
collatz(number, count+1);
}
else
{
number = number*3+1;
collatz(number,count+1);
}
return 0;
}
int main(void)
{
int stored=0;
int temp;
for(int i = 1;i<10;i++)
{
temp = collatz(i,1);
if(temp>stored)
{
stored = temp;
}
}
printf("%i\n",stored);
}
问题当然是该函数最终到达其端点,但随后作为链的长度返回,这成为新的数字..
我如何构造这个程序,以便当计数到达其端点时,我可以将此值作为第一次调用的输出?