Python方程式

Joh*_*ine 0 python recursion python-2.7

对于这个问题:麦当劳以6,9或20个McNuggets的包装出售Chicken McNuggets.因此,例如,可以准确购买15个McNuggets(一个包6个,第二个包9个),但是不可能只购买16个McNuggets,因为没有6个,9个的非负整数组合为了确定是否可以准确地购买n个McNuggets,必须找到a,b和c的非负整数(可以是0),使得6a + 9b + 20c = n.并且20'加起来为16.

解决方案是

def McNuggets(n):

    if n == 0:
       return True
    if n < 0:
       return False

    return McNuggets(n-6) or McNuggets(n-9) or McNuggets(n-20)
Run Code Online (Sandbox Code Playgroud)

Python如何在McNuggets(n-6),McNuggets(n-9)和McNuggets(n-20)之间做出选择?

KSF*_*SFT 7

它不会在它们之间"选择".它评估所有这些.你正在使用or它们的逻辑运算符,这意味着如果它们中的任何一个返回True,它将评估为True.

  • 值得注意的是,由于"或"是短路的,它并不一定能评估所有这些因素. (8认同)
  • @Shashank这是一个很好的观点,但OP似乎只是在学习Python,我认为这只会让我的答案变得不必要地复杂化. (2认同)
  • 活泉!这篇文章让我超过1k代表! (2认同)