如果我有此递归函数:
int mystery(int n) {
if ( n == 0 || n == 1 || n == 2) return n ;
return (mystery(n-1) + mystery(n-2) + mystery(n-3)) ;
}
我正在寻找谜题(20)。
在计算函数时,如何找出要执行的加法运算次数以及要计算mystery(20)的mystery()调用次数是多少?
我尝试添加一些cout语句,例如:
int mystery(int n) {
if ( n == 0 || n == 1 || n == 2) {
cout << n << endl;
return n ;
}
cout << n << endl;
return (mystery(n-1) + mystery(n-2) + mystery(n-3)) ;
}
但由于输出了上千个数字,我无法真正理解它。而且我不认为这些cout语句在告诉我执行了多少加法运算以及为了计算mystery(20)进行了多少mystery()调用方面没有起到太大作用?
感谢您提供的所有帮助!
最佳答案
最简单的方法是增加全局(或静态全局)变量。
想得到一些神秘电话的东西:
int nb_of_invok = 0;
int mystery(int n)
{
nb_of_invok++;
...your code here...
}
这得到增加的数量:
int nb_of_invok = 0;
int nb_of_add = 0;
int mystery(int n)
{
nb_of_invok++;
if(...)return n;
nb_of_add++;
return(...);
}
关于c++ - C++中的递归函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5346897/