问题描述
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()
内部的调用。