如果我有这个递归函数:
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() 才能计算出 mystery(20)?
我尝试添加一些 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/