赋值是编写一个返回字符串s长度的递归函数lenRecur(s)。允许切片,显然len()函数不是。在经历了下面的代码挣扎太久之后,答案就明白了:它实际上是众所周知的一行代码,#34;很简单!以下是 NOT "正确"回答,但我仍然想知道它为什么不起作用。我试图递归地分解字符串并用索引计算步数,但索引每次都重置为0,所以我想创建一个内部函数countRecur(s,i),它需要s 和初始索引作为参数,并使用每次递归扩充索引。最终索引将返回到外部函数。底线:指数曲线正确,但返回i返回无。
def lenRecur(s):
i=0
def countRecur(s,i):
if s == "":
print "final i = ", i
return i
else:
i+=1
print s
s = countRecur(s[:-1],i)
p = countRecur(s,i)
return p
s = "abc"
q = lenRecur(s)
print q
这是输出:
abc
ab
a
final i = 3
None
答案 0 :(得分:2)
您的问题是,您没有返回s
,您应该将其更改为i
,因为当s
是最初的字符串时它是计数。当你没有归还它时,你基本上扔掉s而p永远不会被设置。
def lenRecur(s):
i=0
def countRecur(s,i):
if s == "":
print "final i = ", i
return i
else:
i+=1
print s
i = countRecur(s[:-1],i)
return i
p = countRecur(s,i)
return p
s = "abc"
q = lenRecur(s)
print q
abc
ab
a
final i = 3
3