algorithm - 如何从给定的递归函数中找到递归关系

标签 algorithm recursion recurrence

我正在复习我的数据结构和算法类(class)的旧考试集,但似乎无法弄清楚如何解决这个问题。

问题 (d) 通过以下递归方法找到乘法次数的递推关系:

static int f(int N)
   {
       if (N > 1) return 2*f(N - 1);
       else return 3;
   }

答案: T(N) = T(N − 1) + 1

我不是很明白这个关系是怎么求乘法数的?

T(2) = T(2 - 1) + 1 = 2
T(3) = T(3 - 1) + 1 = 3

我尝试在关系中插入 2 和 3,但我仍然看不出乘法的数量。我走在正确的轨道上吗?

最佳答案

f(N)f(N-1) 多了一次递归调用,所以多了一次乘法,因此

T(N) = T(N-1) + 1

基本情况 T(1) = 0

关于algorithm - 如何从给定的递归函数中找到递归关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55617518/

相关文章:

删除所有 NA,同时保留尽可能多的数据

c++ - 无法打印完整的二叉搜索树,因为我从最低节点向后迭代的逻辑有缺陷

algorithm - 主定理案例 3 示例算法

sql - 如何使用 SQL Server sysschedules 模型查询给定日期的所有事件?

algorithm - 递归关系 : T(n) = T(ceil(n/3)) + T(ceil(3n/5)) + 100*n

algorithm - 计算新经度,旧纬度 + n 米

Python - 提高 Itertools 排列计算的性能速度;重复=15

javascript - 如何确定这个算法的时间和空间复杂度?

Python递归地__getattribute__

javascript - 使用递归返回嵌套对象 - Javascript