algorithm - 递归的步数方法示例
问题描述
我需要找到斐波那契数列的递归算法的步数。谁能解释如何找到任何递归算法的步数?
fibo(n)
{
if(n=2)
return 1
else
return fibo(n-1)+fibo(n-2)
}
解决方案
简单计算时 step 为 1,不需要计算时 step 为 0
step
1 fibo(n) 0
2 { 0
3 if(n=2) 1
4 return 1 1
5 else 0
6 return fibo(n-1)+fibo(n-2) 1+T(n-1)+T(n-2)
7 } 0
如果 n=2 那么 1,2,3,4 行将只执行 1 次 所以对于 n=2
t(n)= 1*0 + 1*0 + 1*1 + 1*1
如果 n>2 行 1,2,3,5,6,7 将被执行,其中 3 和 6 的步长>0 所以第 3 和 6 行将贡献时间(否则部分采取 0 步。如果部分有计算和if 块的条件将决定是执行 if 部分还是 else 部分。这就是为什么我们计算 else 0)
so for n>2
T(n)=1+1+T(n-1)+T(n-2)
T(n)={
2 for n=2
2+T(n-1)+T(n-2) for n>2
}
推荐阅读
- java - 在 Java 中拆分包含姓、名和首字母的字符串
- java - 如何在 dockerized Spring Boot 应用程序中启用 https(找不到 PKCS12)
- ruby-on-rails - 无法检测到 rake 任务,NameError: undefined local variable or method 'config' for main:Object
- input - sas数据集中具有相同名称的不同变量
- ios - ios Objective-c架构arm64的重复符号
- asp.net-mvc - 交换部署槽时如何刷新 Azure 应用服务缓存
- java - 如何在回收器适配器中初始化侦听器?
- function - 函数到 Lambda 转换
- javascript - 如何将对象作为数据类型传递给 sequilize 中的数据模型?
- javascript - 如何更新地图键?