Python两个返回带递归的值

时间:2013-10-06 11:07:16

标签: python

试图找出如何从函数中返回多个值。我试过并搜索了信息,似乎我应该使用元组。

这是一个普通的递归函数(从另一个stackoverflow问题复制):

def backward(text):
    if text == '':
        return text
    else:
        return text[-1] + backward(text[:-1])

现在,假设我希望函数既返回反转文本又返回元组中的初始文本。我怎么能让它起作用? 我想要得到的是什么:

>>> print(backward('hello'))
('olleh','hello')

不断收到“无法将'元组'对象隐式转换为str”等错误。有什么想法吗? 感谢。

2 个答案:

答案 0 :(得分:3)

您不需要递归此

def backward(text):
    if text == '':
        return text
    else:
        return text[::-1], text

答案 1 :(得分:0)

def backward(text):
    return (backwardImpl(text), text)

def backwardImpl(text):
    if text == '':
        return text
    else:
        return text[-1] + backwardImpl(text[:-1])

>>> print(backward('hello'))
('olleh','hello')

具有一个功能的版本:

def backward(text, recursiveCall = False):
    if not recursiveCall:
        return (backward(text, True), text)

    if text == '':
        return text
    else:
        return text[-1] + backward(text[:-1], True)

但是,如果客户端调用第二个参数设置为True,则会破坏结果。