【发布时间】:2013-04-09 02:44:03
【问题描述】:
我在尝试弄清楚如何跟踪我的递归函数在执行 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/
【问题讨论】:
-
将计数作为参数传入,或将其设为静态。
-
@Serdalis 递归函数中的静态变量不起作用?该变量永远不会被重置,也无法在任何时候将其设置为零,因为它每次调用自己时都会重复将自己设置为零。
-
@Need4Sleep 你只提到了一个初始条目,在这种情况下,静态将正常工作。否则使用按引用计数参数。
-
是的,我认为静态会有问题。将它作为参数传递是你想要的。
-
是的,静态会有问题,因为你也必须有一个案例来重置它,只需提供选项:)