2013-10-06 69 views
-2

试图找出我如何可以从函数返回多个值。我试过搜索信息,看来我应该使用元组。Python的两个返回值与递归

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

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

现在,让我们说,我希望函数返回两个相反的文字,而且在一个元组的初始文本。我将如何使它工作? 我想获得:

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

不断收到错误,如“无法将‘元组’对象隐含STR”。有什么想法? 谢谢。

+0

只是'回报first_thing,second_thing' – georg

+0

返回一个元组或字典,如果你有这样做的必要。那么你的问题在哪里? –

+0

此外,你的代码段很好,请发布你的错误代码。 – georg

回答

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秒参数调用它会破坏的结果。

+0

你的两个函数都被命名为'backward'。 – Tim

+0

@Tim对,谢谢,修正:) – BartoszKP

+0

花了我一些时间去了解最后一行,但我想我现在明白了!顺便说一句:有可能只用一个函数来做到这一点? – user2005203

3

你不需要递归这个

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

最有可能的是它的一项家庭作业。 –

+1

@ user2005203 - 如果这是家庭作业,您应该提及它是作业并解释实际作业是什么。 [stackoverflow家庭作业政策](http://meta.stackexchange.com/questions/10811/how-do-i-ask-and-answer-homework-questions) –