C++ 中的递归 Collat​​z 函数

问题描述

为了计算必须实现 Collat​​z 猜想才能得到结果 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));
  }