Я пытаюсь создать некоторый код, который при задании начального числа пытается найти длину соответствующей цепочки коллатца.
Я надеялся сделать это рекурсивно, и это то, что у меня есть до сих пор:
#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);
}
Проблема, конечно, в том, что функция в конечном итоге достигает своей конечной точки, но затем возвращается как длина цепочки, и это становится новым числом.
Как я могу структурировать эту программу, чтобы, когда счет достигает своей конечной точки, я мог принять это значение в качестве вывода самого первого вызова?