我很难弄清楚在执行collatz函数时如何跟踪我的递归函数调用自身的次数。我有函数定义:
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);
}
}
我如何跟踪该函数调用自身的次数?我似乎无法为自己的生活提出解决方案。谢谢!
引用collatz函数:http://www.xamuel.com/collatz-recursion/
最佳答案
您正在尝试计算Collatz链的长度,不是吗。您知道当前您始终返回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++ - 在我的递归函数中跟踪计数(Collatz),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15892421/