gpt4 book ai didi

python - 如何计算不循环需要循环多少次?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:26:10 27 4
gpt4 key购买 nike

如果我有一个值 A,它以其当前值的 10% 递增,同时被固定数量 B 带走,我如何计算在不实际循环的情况下达到 0 需要多少循环?

这就是我通过循环找到它的方式:

LoopsNeeded = 0
A = 100
B = 20
while A > 0:
C = A * 0.1
A = A + C
A = A - B
LoopsNeeded = LoopsNeeded + 1
print(LoopsNeeded)

在第一个循环中:

initial values
A = 100
B = 20
-------
A > 0 = True
C = A(100) * 0.1 = 10
A = A(100) + C(10) = 110
A = A(110) - B(20) = 90
LoopsNeeded = 1
-------
A is now 90 on the next round of the loop

这导致总共需要 8 个循环,如果我用非常大的数字执行此操作,这个循环可能会花费很长时间,这样做的更短方法是什么?

最佳答案

Ai 为迭代 iA 的值,其中 A0 是 100。

让我们为 Ai 创建一个递归公式:

Ai = Ai−1 · 1.1 − B

如果我们展开它,我们得到:

Ai = (Ai−2 · 1.1 − B) · 1.1 − B = Ai−2 · 1.12B · 1.1 − B
Ai = (Ai−3 · 1.1 − B) · 1.12B · 1.1 − B = Ai−3 · 1.13B · 1.12B · 1.1 − B
...
Ai = A0 · 1.1iB · (1.10 + 1.11 + ⋯ + 1.1i−1)

所以:

Ai = 100 · 1.1i − 10 · B · (1.1i − 1)

或者一般来说:

Ai = A0 · (1 + p)iB · ((1 + p)i - 1) / p

要找到 A == 0 之后的迭代 i,我们可以设置 Ai = 0 并求解 i:

0 = Ai
0 = 100 · 1.1i − 10 · B · (1.1i − 1)
1.1i = 10 · B · (1.1i − 1)
i = log1.1 (10 · B / (10 · B − 100))

或者一般来说:

i = logp + 1 (-B / (p · A0B))

B = 20 时,i = 7.2。我们四舍五入,确实得到了 8。

时间复杂度是O(1)

关于python - 如何计算不循环需要循环多少次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58354253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com