algorithm - 递归函数的执行次数
问题描述
我有这个递归算法,T(n) 是执行 P(a, b) 的次数,n := b - a
int foo[] = ... // array of big enough size
function P(int a, int b)
if (a+1 < b) {
int h = floor((a+b)/2)
if foo[h] >= 0 then P(a, h)
if foo[h] <= 0 then P(h, b)
}
end function
我如何计算 T(1)、T(2)、T(3) 和 T(4)
解决方案
由于每次a
和b
(作为函数的输入)之间的距离减半,时间复杂度为Theta(log(b-a))
。
推荐阅读
- python - 困难,包括 python linter 范围内的额外智能感知路径
- java - 主线程如何向子线程传递信息(如何在run方法中处理消息?)?
- java - OnClickListener 导致无限循环
- spring - 传递一个角色来验证来自邮递员的基本 http
- r - 如何制作嵌套的 purrr 映射以基于动态变量而不是嵌套循环来提取行?
- xml - 通过 xslt 在 xml 标记的两个属性中创建不同的值
- javascript - 获取总值
- php - Laravel 保存 HasOne 会创建重复条目
- android - 如何找到适用于 android 的最新兼容 firebase 库版本
- python-3.x - Numba @jit 无法加快此功能的性能。无论如何要解决这个问题?