java - 我将如何为这样的算法建立递归关系?

标签 java relation recurrence

我需要找到该算法执行的乘法次数的递归关系,该算法找到基数^n,但由于底部的 IF,我真的不知道如何去做。

public int reduceAndConquer(int base, int n){
 if(n == 1) return base;
 if(n == 2) return base*base;
 else{
   int total = reduceAndConquer(base, n/2);
   if(n%2 == 0) return total*total;
   return total*total*base;
 } 
}

由于它是 1 次或 2 次乘法,具体取决于它是偶数还是奇数,所以我不确定如何将其转化为关系。任何输入都会有帮助。

最佳答案

我认为你可以在递归关系中执行偶数/奇数分支:

T(n) = T(n/2)+1          for n even
T(n) = T(floor(n/2))+2   for n odd

或另一种表达方式:

T(2k) = T(k)+1
T(2k+1) = T(k)+2

或者,如果您确实想要一个公式:

T(n) = T(floor(n/2)) + 1 + n%2

其中 n%2 当然是 n-(2*floor(n/2)) 的简写

关于java - 我将如何为这样的算法建立递归关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55798126/

相关文章:

java - Android Studio Firebase 查询。我只想显示具有相同uid的学生和 child

mysql - 环回: saving model relations to database

computer-science - T(n-1) + 1/lg(n) 循环

algorithm - 解决重复 : T(n)=3T(n/2)+n

TYPO3 对象存储为空

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

Java 排序日期字段

java - 在几个小时的范围内从昨天获取纪元时间

java - 为什么必须从同步块(synchronized block)/方法调用等待和通知?

php - 如何在州和城市的 yii 框架中创建和查看关系