需要快速算法

时间:2018-12-10 15:23:58

标签: algorithm

给出两个数字,分别为开始和停止以及具有固定迭代次数n的下一个循环。

res = start
for (i=0; i<n; i++)
    res = res * c;

在循环结束时,res应该等于停止+/-某些错误。

我如何计算c。一个代码示例将不胜感激。

编辑:

可接受的答案可能是使用pow函数的最快方法。但是,如果start和stop确实是整数并且计算出的c可以近似的话。

我对“最快”算法的谦卑努力是:

float (int start, int stop, int n) {

      float delta = some number; // which would be the best entry point for delta?

      float c = some number; // which the best for c?

      int error = 1; // integer too. But does this matter?

      while(delta > error) {

          res = start;

          for(i=0; i<n, res<stop;i++)
              res = res * c;

          delta = distance(res, stop);

          if(res > stop)
              c += some number; //which number here?
          else
              c -= some number; //and here?
    }
    return c;
}

1 个答案:

答案 0 :(得分:5)

只需进行简单的代数变换

start * c^n = stop
c^n = stop / start
c = (stop / start)^(1/n)

((某些编程语言中的math.powpower函数)