5

文字列の長さを再帰的にカウントする単純な関数を作成しようとしています。

合計、フィボナッチ、階乗は簡単に実行できますが、パラメーターを1つだけ使用して最も単純な関数を作成しようとしています。カウンターのインデックスとして、秒を使用するのは好きではありません。

私にとって小さな投稿はありますか?

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 に答える