递归func(int a, int n)和return a*func(a, n-1)的时间复杂度是多少?

What is the time complexity of recursion func(int a, int n) and return a*func (a, n-1)?

int func(int a, int n){

     if (n==0) return 1;

     else return a*func(a,n-1);

}

我正在学习算法,我想知道这个函数的时间复杂度是多少?

函数计算a^n.

此函数将使用不同的参数在系统堆栈(分配给程序)上推送 n 次。

因此,时间复杂度为O(n)。

如果递归对您来说很难形象化,那么可以将其视为类似于使用循环进行计算。循环将 运行 n 次。

例如:

function power(a, n){    
    ans = 1;
    for(int i=1; i<=n;i++){
        ans = ans * a;
    }
    return ans;
}

可视化递归的最佳方式:

画出递归树。