我正在尝试编写一个简单的递归函数来计算字符串长度,但是我感到困惑。
我可以轻松地做加法、斐波那契数列和阶乘,但我正在尝试创建只有一个参数的最简单函数,我不喜欢另外再添加一个计数器索引。
有人能为我提供一个简短的函数吗?
我正在尝试编写一个简单的递归函数来计算字符串长度,但是我感到困惑。
我可以轻松地做加法、斐波那契数列和阶乘,但我正在尝试创建只有一个参数的最简单函数,我不喜欢另外再添加一个计数器索引。
有人能为我提供一个简短的函数吗?
这是你要找的内容吗?
def recursiveLength(theString):
if theString == '': return 0
return 1 + recursiveLength(theString[1:])
is
测试的是身份而不是相等性。它可以工作,但依赖于实现细节。 - unholysamplerdef length(s):
return 0 if s == '' else 1 + length(s[:-1])
print length('hello world') # prints 11
函数式Haskell风格
>>> def RecListValue(list_value):
return type(list_value) in [list,str,tuple] and list_value and 1+RecListValue(list_value[1:]) or 0
>>> example_struct = [range(10), ("one",)*12, "simple string", 12]
>>> map(RecListValue, example_struct)
[10, 12, 13, 0]
>>>
如果不需要尾递归:
def strlen(s):
if s == '':
return 0
return 1 + strlen(s[1:])
虽然这样做效率相对较低。