我有一个循环随着迭代次数的增加而减少。我需要计算它将经历的迭代次数(我在这个问题的底部解释了为什么我需要这个)。前6步是
0.50, 1.50, 1.83, 2.11, 2.34, 2.55, ...
计数从 0.5 开始并以递减的速度增长,直到达到 20。循环归结为:
var SCALE = 0.5; // Starting value, also affects increment
var MAX = 20; // Maximum value
var i = 0; // Just for counting
for (var count = SCALE; count < MAX; count += SCALE / count) {
console.log(count, i);
i++;
}
您可以看到,由于 的原因,该图的增长速度越来越慢count += SCALE / count
,因此随着计数的增加,分母也会增加。
我认为它遵循指数pow(MAX, 1 / SCALE)
线,但不完全是:
MAX = 5 : 23 iterations Math.pow(5, 2) = 25
MAX = 10 : 97 iterations Math.pow(10, 2) = 100
MAX = 15 : 222 iterations Math.pow(15, 2) = 225
MAX = 20 : 397 iterations Math.pow(20, 2) = 400
SCALE
另外,当不是 0.5时,这种方法就会崩溃。
问题
我可以使用什么等式来SCALE
计算MAX
迭代次数?
为什么我需要这个?
我正在尝试将本文底部的示例代码转换为 GLSL 着色器代码。问题是显卡只能执行整数计数到一个常数的for循环,所以我需要知道在开始循环之前循环将进行多少次迭代。
我需要这样的东西:for(int i = 0; i < MAX_COUNT; i++)
但首先我需要知道MAX_COUNT
会是什么。