【问题标题】:How would I go about making a recurrence relation for an algorithm like this?我将如何为这样的算法建立递归关系?
【发布时间】:2019-04-22 17:05:52
【问题描述】:

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

【问题讨论】:

    标签: java relation recurrence


    【解决方案1】:

    我认为你可以在循环关系中做偶数/奇数分支:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 2014-04-29
      相关资源
      最近更新 更多