在递归函数中挣扎,我在做什么错

霍普

我对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())
雅各布·鲍耶(Jakob Bowyer)
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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递归程序:我在做什么错?

来自分类Dev

Haskell函数无法正常工作,我在做什么错?

来自分类Dev

appendChild不是函数-我在做什么错?

来自分类Dev

在此SendInput代码段中我在做什么错?

来自分类Dev

R中的快速傅立叶变换。我在做什么错?

来自分类Dev

查询中的GROUP BY-我在做什么错呢?

来自分类Dev

在以下WebGL代码中我在做什么错?

来自分类Dev

在此C ++代码中我在做什么错?

来自分类Dev

CSS文件中的图像引用-我在做什么错?

来自分类Dev

终端中的符号链接(我在做什么错?)

来自分类Dev

Oracle中的慢速更新查询-我在做什么错?

来自分类Dev

Gruntjs目标我在做什么错?

来自分类Dev

重量我在做什么错?

来自分类Dev

SQL Pivot(我在做什么错)

来自分类Dev

.htaccess我在做什么错?

来自分类Dev

Firestore-我在做什么错?

来自分类Dev

Perlin的声音-我在做什么错?

来自分类Dev

Gruntjs目标我在做什么错?

来自分类Dev

QWinTaskbarProgress我在做什么错?

来自分类Dev

TFS权限-我在做什么错?

来自分类Dev

Sed我在做什么错

来自分类Dev

grep我在做什么错?

来自分类Dev

打印余额,我在做什么错?

来自分类Dev

jQuery附加-我在做什么错?

来自分类Dev

XML模式-我在做什么错?

来自分类Dev

JavaScript-我在做什么错?

来自分类Dev

我的matplotlib ArtistAnimation我在做什么错?

来自分类Dev

JAVA我在做什么错,我要线

来自分类Dev

我不知道我在做什么错