Python if if语句在递归函数中被卡住:

时间:2016-02-26 00:53:04

标签: python if-statement recursion

所以我正在创建一个函数,它需要一个字符串和我需要在其中插入的间隙数量,我希望它输出插入这些间隙的所有可能组合的字符串列表。

我为此编写了一个递归函数,但无论我做什么,停止if条件都没有被激活。即使打印表达式本身也会给出正确答案,但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 个答案:

答案 0 :(得分:1)

在循环for seq in outSeq时,您要将项目附加到outSeq。您每次都返回至少一个项目的列表(基本案例返回[string]因此您将为您访问的每个项目添加至少1个项目,因此您有一个无限循环。请考虑将您的输出添加到新项目列表(或使用列表推导,如[insertBlanks(numGap - 1, seq) for seq in outSeq]