2016-02-26 72 views
0

所以我做了一個函數,它需要一個字符串和我需要插入的空白的數量,並且我希望它輸出所有可能的字符串列表插入這些空白的組合。Python if else語句在遞歸函數卡住:

我已經爲此寫了一個遞歸函數,但是如果條件沒有被激活,無論我做什麼,都會停止。即使在本身打印表達式也給出了正確的答案,但if條件並不遵循該表達式。

我希望你們能幫上忙,儘管這可能是我的一個非常簡單的錯誤,我似乎無法找到它。

在此先感謝。

f = open("bonusoutput.txt",'w') 

sequence1 = raw_input("Sequence 1:") 
sequence2 = raw_input("Sequence 2:") 

l1 = int(len(sequence1)) 
l2 = int(len(sequence2)) 

#---------------Function that has problem----------------------------- 

def insertBlanks(numGap,string): 
    if (numGap <= 0): 
     return [string] 
    else: 
     outSeq = [] 

     for cp in range(0,len(string)+1): 
      outSeq.append(string[:cp] + "_" + string[cp:]) 
     for seq in outSeq: 
      outSeq += (insertBlanks(numGap-1,seq)) 

     return outSeq 
#------------------------------------------------------------- 

nGap1 = l2 
nGap2 = l1 

outSeq2 = insertBlanks(nGap1,sequence2) 
f.write(str(outSeq2)) 
print outSeq2 

回答

1

雖然循環for seq in outSeq,要附加項目outSeq。您每次返回至少一個項目的列表(基本大小寫返回[string],因此您將爲每個訪問的項目添加至少1個項目,因此您有無限循環。請考慮將輸出添加到新列表(或使用列表理解,如[insertBlanks(numGap - 1, seq) for seq in outSeq]

+0

謝謝!完美解決了這個問題。 – KaziJehangir