如何为循环找到必要的乘数

how to find necessary multiplier for loop?

本文关键字:循环      更新时间:2023-10-16
#include <iostream>
using namespace std;
int main() {
  float result = 50.0f;
  float multiplier = 0.5f;
  float fixed_multiplier = 1.0f - multiplier * 0.001f;
  for (int i = 0; i < 1000; ++i) {
    result *= fixed_multiplier;
  }
  cout << result << endl; // 30.322 -- want approximately 25
}

在 1000 次迭代之后,我希望result等于 multiplier*result ( result==25 (。如何找到修改乘数(以fixed_multiplier为单位(以获得所需结果所需的内容?

您的for循环由以下数学方程总结:

result * fixed_multiplier ^ 1000 = result * multiplier

你可以求解这个方程来找到你的答案。

您可以使用 pow 函数在 C 中获得相同的结果:

fixed_multiplier = pow(multiplier, 0.001);

您有以下关系:

result_out = result * fixed_multiplier^1000

其中^表示"权力"。 简单代数给你这个:

fixed_multiplier = (result_out / result) ^ (1/1000)