我很难弄清楚在执行collat​​z函数时如何跟踪我的递归函数调用自身的次数。我有函数定义:

template<class myType>
myType recursionSet<myType>::collatz(myType n)
{
    if(n == 1)
        return 1;
    else {
        if(n%2 == 1)
            return collatz(3*n+1);
        else
            return collatz(n/2);
    }
}

我如何跟踪该函数调用自身的次数?我似乎无法为自己的生活提出解决方案。谢谢!

引用collat​​z函数:http://www.xamuel.com/collatz-recursion/

最佳答案

您正在尝试计算Collat​​z链的长度,不是吗。您知道当前您始终返回1吗?您应该修改代码以返回计数。这意味着将当前迭代添加到递归调用中:

template<class myType>
myType recursionSet<myType>::collatz(myType n)
{
    if(n == 1)
        return 1;
    else {
        if(n%2 == 1)
            return 1 + collatz(3*n+1);
        else
            return 1 + collatz(n/2);
    }
}

关于c++ - 在我的递归函数中跟踪计数(Collat​​z),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15892421/

10-13 09:08