递归函数不返回任何内容。有什么问题?

2024-04-27 00:23:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个递归函数,它将从字符串中删除字母,直到它变为空:

def recur_partial(text):
    #base case
    if (len(text) < 2):
        print('')
    #recursive case
    else:
        text = text[1:]
        return recur_partial(text)

例如:

input>>> recur_partial('text')
expected output>>> ext
                   xt
                   t

my output>>> 

>>>

Tags: 字符串textoutputbaselenreturnifdef
3条回答

函数的退出点没有return语句,因此它将不返回任何语句,将return语句放在下面


def recur_partial(text):
    #base part
    if (len(text) < 2):
        print('')
        return "put your return statement here"
    #recursive part
    else:
        text = text[1:]
        return recur_partial(text)

return不是print,要查看插入打印所需的输出

text = text[1:]
print(text)
return recur_partial(text)

为了正确理解递归,我有一些重要的观察结果:

递归函数返回一个值

您的期望不正确,因为它假定函数将返回多个值。 虽然它确实对同一代码进行多次迭代和遍历,但在最后只返回一个值。你知道吗

在基本情况下,您没有返回语句

您编写了一个很好的递归函数,它确实有一个基部分,不会导致堆栈溢出,但最终不会返回任何内容。你知道吗

函数不返回任何内容,因为基部分中没有返回内容,因此无论输入如何,它都将始终不返回任何内容。你知道吗

递归函数输出应根据不同的输入而改变

关于这个想法,如果一个递归函数每次删除一个字母,那么最终结果总是一个空字符串,它将不是一个非常有用的函数,因为每次的结果都是相同的。你知道吗

这将达到您所期望的效果,但请记住,它只是打印中间结果,并且在最后每次都返回空字符串。你知道吗

def recur_partial(text):
    #base case
    if (len(text) < 2):
        return '' # changed from print
    #recursive case
    else:
        text = text[1:]
        print(text) # print the value then continue recursion.
        return recur_partial(text)

相关问题 更多 >