递归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;
}
可视化递归的最佳方式:
画出递归树。
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;
}
可视化递归的最佳方式:
画出递归树。