gpt4 book ai didi

Collat​​z链递归函数C

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:31 24 4
gpt4 key购买 nike

我正在尝试创建一些代码,在给定起始数字时尝试找到相应的 collat​​z 链的长度。

我希望递归地做这件事,这是我目前所拥有的:

#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);
}

问题当然是函数最终到达了它的终点,但随后作为链的长度返回,这成为新的数字..

我该如何构建这个程序,以便当计数到达终点时,我可以将这个值作为第一次调用的输出?

最佳答案

您需要返回递归调用的结果。现在您将忽略递归调用的值并返回 0。每个递归调用应如下所示:

return collatz(number, count+1);

关于Collat​​z链递归函数C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25735284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com