【发布时间】:2021-10-05 21:48:16
【问题描述】:
我有这段代码,它基本上是掷硬币,当它碰到正面 (1) 时它会再次翻转,直到它继续翻转正面的概率低于 0.1% 或者当它碰到反面时它会重新开始。
import numpy
def checkAgain(probability):
if(probability >= 0.1):
runCode()
def flipCoin(successes):
rand = numpy.random.randint(2)
if (rand == 1):
# true
successes += 1
flipCoin(successes)
else:
probability = 50
for i in range(successes):
probability /= 2
print(str(successes) + " " + str(probability) + "%")
checkAgain(probability)
def runCode():
successes = 0
flipCoin(successes)
runCode()
但代码有时只能工作。 Most of the time I get this error: maximum recursion depth exceeded in comparison我在网上看到这可以防止“堆栈溢出”,但我不知道如何让代码运行直到概率低于 0.1
【问题讨论】:
-
为什么在不需要的时候在代码中使用递归?
-
如果您可以使用简单的 while 或 for 循环执行相同的算法,那么在 python 中使用递归并不是一个好主意
-
当您再次调用运行代码时,您再次设置成功 0,
标签: python