-2

试图弄清楚如何从函数返回多个值。我已经尝试并搜索了信息,看来我应该使用元组。

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

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

现在,假设我希望函数既返回反转文本,又返回元组中的初始文本。我将如何使它工作?我想得到什么:

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

不断收到诸如“无法将'tuple'对象隐式转换为str”之类的错误。有什么想法吗?谢谢。

4

2 回答 2

3

你不需要为此递归

def backward(text):
    if text == '':
        return text
    else:
        return text[::-1], text
于 2013-10-06T11:12:06.597 回答
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它会破坏结果。

于 2013-10-06T11:10:40.050 回答