5

我正在尝试编写一个简单的函数来递归计算字符串长度。

我可以很容易地进行求和、斐波那契和阶乘,但我试图用一个参数创建最简单的函数,我不喜欢第二个作为计数器索引..

可以为我发布一些小东西吗?

4

4 回答 4

14

这是你想要的?

def recursiveLength(theString):
    if theString == '': return 0
    return 1 + recursiveLength(theString[1:])
于 2011-04-14T21:44:12.597 回答
4

这样做:

def length(s):
    return 0 if s == '' else 1 + length(s[:-1])

print length('hello world') # prints 11
于 2011-04-14T21:48:02.390 回答
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]
       >>> 
于 2014-04-29T10:54:04.910 回答
0

如果它不必是尾递归的:

def strlen(s):
  if s == '':
    return 0
  return 1 + strlen(s[1:])

不过效率很低。

于 2011-04-14T21:46:07.617 回答