我陷入了一个简单的计算,我曾经在for循环中迭代计算。但现在我不想用循环来计算它。
// What I know
double x0 = p*J;
double x1 = p*J - p*J*J;
double x2 = p*J - p*J*J - p*J*J*J;
double x3 = p*J - p*J*J - p*J*J*J - p*J*J*J*J;
// What I want to know
double xi = ?;
如何在不使用循环的情况下计算xi?
答案 0 :(得分:2)
我们简化:
xi = pJ - pJ^2 - ... - pJ^(i+1)
= pJ(1 - J - ... - J^i)
= pJ(2 - 1 - J - ... - J^i)
= pJ(2 - (1 + J + ... + J^i))
Wolfram Alpha为我们提供了1 + J + ... + J^i
的部分总和;它是(J^(i + 1) - 1) / (J - 1)
。我们将其替换为我们的公式:
xi = pJ(2 - (J^(i + 1) - 1) / (J - 1))
您可以尝试以代数方式简化,但是您已经为xi创建了一个封闭形式的表达式。