在递归期间没有返回结果

时间:2015-07-08 02:29:30

标签: python recursion

所以我创建了一个简单的递归函数,它基本上比较了两个字符串,'string'和'target',如果它们是相同的,该函数用'rep'替换'target',就像函数一样查找和替换您将在文本编辑器中看到。我的问题是,该函数什么都不返回。那是因为它没有打到我的基础案例,或者我错过了某处额外的回报?

def helperfn(string,target,rep,x): # x is always initially set to zero
    if x==len(string): #base case
        target=rep
        return target
    if len(string)==len(target):
        if string[x]==target[x]:
            helperfn(string,target,rep,(x+1))
    else:
         return "string and target are not the same"

预期输出应该是什么的几个例子:

helperfn("noway","noway","yes",0)=>"yes"
helperfn("ok","ok","never",0)=>"never"

2 个答案:

答案 0 :(得分:3)

当您递归调用该函数时,您希望返回该值。

return helperfn(string,target,rep,(x+1))

答案 1 :(得分:1)

这是因为你从未在一个分支中明确地返回任何内容。变化

if len(string)==len(target):
    if string[x]==target[x]:
        helperfn(string,target,rep,(x+1))

if len(string)==len(target):
    if string[x]==target[x]:
        return helperfn(string,target,rep,(x+1))