int foo(int n)
{
if(n==0)
return 1;
int sum = 0;
for(int i = 0;i < n;i++)
sum += foo(n-1);
return sum;
}
我最近正在学习Big O符号。 有人可以通过使用big-O表示法以及如何呈现此函数的运行时来让我了解如何确定此递归函数的运行时。
答案 0 :(得分:0)
那么想想如果你为一个大n运行foo(n)会发生什么。总和则包括n次调用foo(n-1)。在递归树的下一级,我们有foo(n-1),我们再次调用n(-1)次foo(n-1-1),但是对于我们树中的每个n foo(n-1)个分支。我们知道树的高度为n,因为我们必须到foo(n-n)。因此,在每个递归步骤中,将foo的一个实例转换为foo(n-1)的O(n)个实例。
我不确定我是否应该透露答案,因为它看起来像是一个练习,但它似乎显而易见,只需绘制几层递归树并找到你的答案。