Python字符串长度递归

发布于 2024-11-01 05:49:23 字数 125 浏览 0 评论 0原文

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

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

任何人都可以为我发布一些小东西吗?

I'm blanking out trying to write a simple function to count the string length recursively.

I can do sums, fibonacci, and factorial easy but I'm trying to create the simplest function with only one parameter, I don't like having a second just as a counter index..

Can any post something small for me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

梦在深巷 2024-11-08 05:49:23

这是您要找的吗?

def recursiveLength(theString):
    if theString == '': return 0
    return 1 + recursiveLength(theString[1:])

Is this what you are looking for?

def recursiveLength(theString):
    if theString == '': return 0
    return 1 + recursiveLength(theString[1:])
你的往事 2024-11-08 05:49:23

这是这样做的:

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

print length('hello world') # prints 11

This does it:

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

print length('hello world') # prints 11
梦太阳 2024-11-08 05:49:23

函数式 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]
       >>> 

Functional haskell style

       >>> 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]
       >>> 
顾北清歌寒 2024-11-08 05:49:23

如果它不必是尾递归:

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

但效率相当低。

If it doesn't have to be tail-recursive:

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

It's pretty inefficient though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文