Pythonで再帰関数
特に難しい部分はありませんでした。
Pythonだと、リストの先頭以外の残りの値を取得するにはlist[1:]
が一番シンプルかな?と思います。
ただ、Pythonは末尾再帰最適化(末尾呼び出し最適化?)が効かないようで、さらに手動で再帰呼出しの回数を指定して上げる必要が有ります。
import sys
from typing import List
# 再帰の最大回数を増やす
sys.setrecursionlimit(2002)
def my_sum(l: List[int]) -> int:
return 0 if l == [] else l[0] + my_sum(l[1:])
assert 1999000 == my_sum( list(range(1, 2000)) )
公開日:2018/04/30