我无法弄清楚如何跟踪我的递归函数在执行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/
答案 0 :(得分:2)
您正在尝试计算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);
}
}