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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...