【问题标题】:How can I write a recursion for this function?我怎样才能为这个函数写一个递归?
【发布时间】:2021-10-06 07:02:43
【问题描述】:

如何为这个函数编写递归?

def randomWord(args):
    yield random.choice(args)

list = ['book', 'apple', 'word']
books = randomWord(list)
print(next(books))
print(next(books))
print(next(books))
print(next(books))
print(next(books))

在每个print(next(books)) 之后,我需要从list 获取一个随机词

【问题讨论】:

  • 为什么需要递归?只需使用无限循环。
  • 只要使用while True: yield random.choice(args)
  • @Barmar 使用递归很重要
  • 为什么“重要”?如果这是家庭作业的要求,请说出来。
  • 这段代码试图解决的实际问题是什么?

标签: python python-3.x list recursion


【解决方案1】:
def randomWord(args):
    yield random.choice(args)

list = ['book', 'apple', 'word']
books = randomWord(list)

def recurse(n):
    if n == 0: return # base case

    print(next(books))
    recurse(n-1)

recurse(99) # the recurse function will call itself 99 times (for a total of 100 calls)

不知道为什么你会想要这个而不是循环......

【讨论】:

    【解决方案2】:

    从 Python 3.3 开始,您可以只使用 yield from 关键字。

    def randomWord(args):
        yield random.choice(args)
        yield from randomWord(args)
    
    list = ['book', 'apple', 'word']
    books = randomWord(list)
    print(next(books))
    print(next(books))
    print(next(books))
    print(next(books))
    print(next(books))
    

    【讨论】:

    • 我相信你知道这最终会达到递归深度限制。
    • 是的,它最终会的。但这就是递归的工作原理。
    猜你喜欢
    • 2014-01-07
    • 2014-01-05
    • 1970-01-01
    • 2017-03-23
    • 2016-03-07
    • 1970-01-01
    • 2010-10-16
    • 2014-03-31
    • 2022-11-11
    相关资源
    最近更新 更多