math - 求解递归:T(n) = T(n - 1) + T(n - 2) + 3
问题描述
T(1) = T(2) = 1,对于 n > 2,T(n) = T(n - 1) + T(n - 2) + 3。
到目前为止我做了什么:
T(n-1) = T(n-2) + T(n-3) + 3 + 3
T(n-2) = T(n-3) + T(n-4) + 3 + 3 + 3
T(n) = T(n-2) + 2T(n-3) + T(n-4) + 3 + 3 + 3 + 3 + 3
T(n) = T(1) + 2T(2) + T(n-4) + 3(n + 2)
我不确定这是否正确,如果是,我该如何摆脱 T(n-4)。
解决方案
这些类型的重复很棘手,不幸的是,重复扩展方法会让你一事无成。观察递归树只会给你一个上限,这个上限通常并不严格。
我可以建议两种方法:
1.替代+标准定理
进行以下变量替换:
这是Akra-Bazzi 方法的正确形式,带有参数:
2. 斐波那契公式
斐波那契数列有一个明确的公式,可以通过猜测形式的解来推导出Fn = a^n
。以此作为类比,用类似的表达式代替T(n)
:
使常数项和指数项相等:
取正根,因为负根的绝对值小于 1,因此会随着 的增加而衰减到零n
:
这与(1)一致。
推荐阅读
- python - BeautifulSoup 网页有保护和 prettify() 不返回数据
- java - 如何将 netcdf 变量初始化为全局变量以避免 java.lang.NullPointerException?
- angular - Angular 6 通用,.net 模板,由于 uglifyjs-webpack-plugin 无法发布
- php - 已达到“415”的最大函数嵌套级别,正在中止
- plsql - 使用复选框选定的元素过滤报告
- apache-kafka - 如何为单个主题设置多个 Kafka JDBC 接收器连接器
- matlab - 初始化 CamShift 算法的问题
- python-3.6 - 如何在 Python3 代码中随机混合字符串?
- javascript - Quiz , want to show both correct and incorrect answer when the choosen answer is incorrect
- javascript - 从远程 PC 检索大量数据作为数据列表