【发布时间】:2022-12-10 20:45:33
【问题描述】:
嘿伙计们,我必须写一个函数 返回 collatz 序列中的最大数(不是长度), 例如 如果 n==7 输出应该是 52 因为它是最大的数字;
int collatz_max(int n)
{
int max=0;
if(collatz_max(n)>max)
{
max=n;
return max;
}
if(n%2==0)
{
return collatz_max(n=n/2);
}
else
return collatz_max(n=n*3+1);
}
}
【问题讨论】:
-
这似乎不是使用递归的明显问题。为什么不运行 collatz 序列来跟踪目前发现的最大数量,并在序列终止后返回它(假设它终止)。
-
我不确定您阅读过哪个版本的 C 标准,但是
collatz_max(n=n*3+1)看起来您正在尝试使用关键字参数——C 不具备的功能。这个表达式实际上做了什么,它将n*3+1赋值给n,然后用这个赋值的结果调用collatz_max。 -
是的,这是我的错,尽管它仍然不起作用
标签: c