问题描述
|
我正在尝试编写一个简单的函数来递归地计算字符串长度,这是空白。
我可以简单地实现求和,斐波那契和阶乘,但是我试图仅用一个参数来创建最简单的函数,我不喜欢第二个作为计数器索引。
可以给我贴一些小东西吗?
解决方法
这是你想要的?
def recursiveLength(theString):
if theString == \'\': return 0
return 1 + recursiveLength(theString[1:])
,这样做:
def length(s):
return 0 if s == \'\' else 1 + length(s[:-1])
print length(\'hello world\') # prints 11
,如果不必是尾递归的:
def strlen(s):
if s == \'\':
return 0
return 1 + strlen(s[1:])
不过,它的效率很低。
,功能性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]
>>>