我对python还是很陌生,并且了解递归是一个很重要的概念。我一直在尝试各种脚本来锻炼我的知识,并想出了以下脚本来模拟彩票抽奖,您只需从49个数字中抽出6个,然后将它们与另外6个数字进行比较,看看您是否赢了。我正在努力使用递归函数获取另一个函数的值。
我敢肯定这将是简单明了的,但我自己无法理解。
到目前为止,这是我的代码:
from random import randint
def drawSix():
six = []
while len(six) < 6:
a = randint(1,49)
if a not in six:
six.append(a)
return sorted(six)
def lottery(draw,ticket):
if draw == ticket:
return 'win'
return lottery(drawSix(),drawSix())
我用彩票调用该函数(drawSix(),drawSix())
并递归获取以下内容。
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
lottery(drawSix(),drawSix())
File "/Users/johnhopkins/Desktop/lottery.py", line 14, in lottery
return lottery(drawSix(),drawSix())
def lottery(draw,ticket):
if draw == ticket:
return 'win'
return lottery(drawSix(),drawSix())
实际上生成两个相同票证的几率非常大,远远超过1000,这是Python的最大堆栈大小。
您需要迭代地执行此操作,以避免破坏堆栈。
def lottery(draw,ticket):
while draw != ticket:
draw, ticket = drawSix(), drawSix()
return "win"
请注意,如果您不走运并且仍然找不到胜出的对子O(n)
,O(inf)
那么您可能会永远永远运行这个丑陋的东西
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句