【问题标题】:collatz conjecture, finding max number in sequencecollat​​z猜想,找到序列中的最大数
【发布时间】:2022-12-10 20:45:33
【问题描述】:

嘿伙计们,我必须写一个函数 返回 collat​​z 序列中的最大数(不是长度), 例如 如果 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);
        }
}

【问题讨论】:

  • 这似乎不是使用递归的明显问题。为什么不运行 collat​​z 序列来跟踪目前发现的最大数量,并在序列终止后返回它(假设它终止)。
  • 我不确定您阅读过哪个版本的 C 标准,但是 collatz_max(n=n*3+1) 看起来您正在尝试使用关键字参数——C 不具备的功能。这个表达式实际上做了什么,它将n*3+1赋值给n,然后用这个赋值的结果调用collatz_max
  • 是的,这是我的错,尽管它仍然不起作用

标签: c


【解决方案1】:

该声明

  if(collatz_max(n)>max)

只是在不更改 n 或做任何其他事情的情况下调用自己。所以它会反复不断地调用自己,直到它用完堆栈。你需要重新考虑算法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多