设一个函数f((;
void f(int n)
{
if(n<=1)
return;
f(n-1);
f(n-1);
}
关于这个代码,我有两个主要问题:
- 递归调用的总数是多少
- 电话总数是多少
以及此代码的时间复杂性是多少?
基本上,我想了解调用和递归调用之间的区别,以及总调用是否也包括递归调用。
我将集中讨论您的术语问题
基本上,我想了解调用和递归之间的区别调用以及总调用是否也包括递归调用。
然后剩下的就数了,你肯定可以自己做。
递归调用是来自同一函数的调用。因此,例如,函数f()
包含两个递归调用,都是f(n-1)
。
如果有人调用f(4)
,那么这是一个非递归调用(不是来自f()
内部(,并且通过f(n-1)
它会引起很多递归调用,其中f((调用自己。
因此:
- 调用总数=调用,包括非递归调用和递归调用
- 递归调用是那些来自
f()
内部的调用