没有返回的递归函数 - Python 2.7

时间:2016-04-24 22:25:29

标签: python-2.7

这可以称为递归函数吗?它确实以一种方式减少,但不是以(金额 - 1)的方式减少...

编辑: 如何在不使用return的情况下编写递归函数?

def wow(amount):
    if amount <= 0:
        print "Don't be so negative!"
    elif amount == 1:
    return "Wow!"
    else:
        return amount * "Wow! \n"



amount = int(raw_input("How many 'Wow!' do you wanna see : "))
print wow(amount)

1 个答案:

答案 0 :(得分:0)

不,这不是递归函数。递归函数必须调用自身。 This page解释并显示了递归函数的示例。

这将是一个递归函数。

def wow(amount):
    if amount <= 0:
        return
    else:
        print("Wow! \n")
        return wow(amount - 1)

一个将代码转换为递归函数的完整解决方案将是。

def wow(amount):
    if amount <= 0:
        return "Don't be so negative!"
    elif amount == 1:
        return "Wow!"
    else:
        return inner_wow("", amount)

    def inner_wow(wow_str, amount):
        if amount == 0:
            return
        else:
            wow_str += "Wow! \n"
            return wow(wow_str, amount - 1)

回答你的第二个问题。所有功能都必须返回一些东西。即使你没有告诉他们返回什么,他们仍然会返回无。