问题描述
为了计算必须实现 Collatz 猜想才能得到结果 1 的次数,我实现了一个递归计数器函数,它使用两个参数,特别是数字和计数器。
unsigned int count_collatz_rec(int num,unsigned int count) {
if(num == 1){
count = count + 0;
}
else{
count++;
num = collatz(num);
count = count_collatz_rec(num,count);
}
return count;
}
有没有什么方法可以只使用一个参数来实现这个功能,特别是'num'?
解决方法
我认为这样的事情可以工作:
unsigned int count_collatz_rec(int num)
{
return (num <= 1) ? 1 : 1 + count_collatz_rec(collatz(num));
}