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

时间:2019-04-22 17:05:53

标签: java relation recurrence

我需要找到针对找到base ^ 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乘法,具体取决于它是偶数还是奇数,所以我不确定如何将其转化为关系。任何输入都会有所帮助。

1 个答案:

答案 0 :(得分:0)

我认为您可以在重复关系中进行偶数/奇数分支:

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))的简写