所以我创建了一个简单的递归函数,它基本上比较了两个字符串,'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"
答案 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))