文字列の長さを再帰的にカウントする単純な関数を作成しようとしています。
合計、フィボナッチ、階乗は簡単に実行できますが、パラメーターを1つだけ使用して最も単純な関数を作成しようとしています。カウンターのインデックスとして、秒を使用するのは好きではありません。
私にとって小さな投稿はありますか?
文字列の長さを再帰的にカウントする単純な関数を作成しようとしています。
合計、フィボナッチ、階乗は簡単に実行できますが、パラメーターを1つだけ使用して最も単純な関数を作成しようとしています。カウンターのインデックスとして、秒を使用するのは好きではありません。
私にとって小さな投稿はありますか?
これはあなたが探しているものですか?
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
関数型 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]
>>>
末尾再帰である必要がない場合:
def strlen(s):
if s == '':
return 0
return 1 + strlen(s[1:])
かなり非効率ですが。