Рекурсия длины строки Python - PullRequest
2 голосов
/ 15 апреля 2011

Я пытаюсь написать простую функцию для рекурсивного подсчета длины строки.

Я могу легко суммировать, фибоначчи и факториально, но пытаюсь создать простейшую функцию только с однойпараметр, мне не нравится иметь секунду просто как счетчик индекса ..

Может ли какой-нибудь пост для меня что-то маленькое?

Ответы [ 4 ]

8 голосов
/ 15 апреля 2011

Это то, что вы ищете?

def recursiveLength(theString):
    if theString == '': return 0
    return 1 + recursiveLength(theString[1:])
2 голосов
/ 15 апреля 2011

Это делает это:

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

print length('hello world') # prints 11
0 голосов
/ 29 апреля 2014

Функциональный стиль 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]
       >>> 
0 голосов
/ 15 апреля 2011

Если он не должен быть хвост-рекурсивным:

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

Хотя это довольно неэффективно.

...