给出两个数字,分别为开始和停止以及具有固定迭代次数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;
}
答案 0 :(得分:5)
只需进行简单的代数变换
start * c^n = stop
c^n = stop / start
c = (stop / start)^(1/n)
((某些编程语言中的math.pow
或power
函数)