2014-11-02 88 views
0
""" 

def permNums(inp,sec): 
    newInp = [] 
    for i in inp: 
     for j in sec: 
      if j not in i: newInp.append(i+j)  #I put the print after this line 
    return newInp 


b = permNums(permNums(permNums(inp='word',sec='word'))) 

print b 
""" 


def permNums(inp): 
    newInp = [] 
    for i in inp: 
     for j in 'word': 
      if j not in i: newInp.append(i+j) 
    return newInp 


b = permNums(permNums(permNums(inp='word'))) 

print b 

我看到它的代码已被注释掉,没有代码的代码应该是等价的。注释掉的代码会给我一个错误,说我只给了1个参数而不是2个。我在哪里出错了?为什么我的递归函数没有第二个参数?

我试图把打印功能之后

if j not in i: newInp.append(i+j) 

右,中注释掉的代码,发现最里面的功能不被调用但随后给出了在第2递归的错误可能是因为它不采取“秒'作为一个论点..有人可以为我清除这个请。

+1

这不是正好在你的代码的结构,但可以接受并返回一个元组'( newInp,sec)'from来匹配函数签名newInp,并且嵌套调用将是'permNums(permNums(permNums(('word','word'))))[0]'。 – markw 2014-11-02 15:58:01

回答

3

问题来自第二个电话。让我来说明一下。当内部调用的结果返回时,Python必须执行下面这一步:

permNums(result_of_previous_call) # sec won't implicitly carry through. 

这显然只有一个参数。因此,要解决注释掉的一个,你需要提供额外的sec参数为每个呼叫:

b = permNums(permNums(permNums(inp='word', sec='word'), sec='word'), sec='word') 
相关问题