recursion - 为什么递归斐波那契的时间复杂度是 O(2^n) 而不是 O(n*2^n)?
问题描述
我知道递归树中有 O(2^n) 叶子,但是树下的每条路径都需要 O(n) 时间来计算。那么时间复杂度不应该是O(n * 2 ^ n)吗?
解决方案
在本网站中解释了时间复杂度:here
如果数学解释还不够,考虑用递归树选项构建一个向量,你会得到一个包含 2^n 个元素的向量,所以迭代它的复杂度是 2^n,因为你迭代所有树一次而不是 N 次所有的树。
推荐阅读
- java - Tomcat 9 和 Spring org.apache.catalina.LifecycleException 的问题
- ansible - 由于不必要的字符比较两个数组时出现问题
- c# - 有没有办法将不同的存储库传递给通用方法并让它们使用方法中生成的变量?
- vue.js - 使用 v-show 对话框不出现
- powershell - 对 csv 中的列求和,并使用 Powershell 在第三列中给出结果
- javascript - 仅在没有子域的域上设置 cookie
- c - IoTHubDeviceClient_LL_SetConnectionStatusCallback() 未阻塞
- angular - 将分页添加到材料表后,数据不会以角度加载
- kubernetes - 如何使用 argoCD 部署存储在 AWS ECR 中的 helm 图表
- python - 为什么我的函数返回 HTTP 错误 301?