#はじめに
チートシートの扱いついてはここを読んでください
#再帰の例
recursion.py
def sum(num):
if num == 1:
return 1
else:
return sum(num-1)+num
ans.py
print(sum(100))
>>> 5050
1からnumまでの整数の和を求める関数
関数の中でその関数自身を呼び出すことで、ループして計算することができる
#注意点
ans.py
print(sum(10000))
>>> Traceback (most recent call last):
>>> File "./Main.py", line 6, in <module>
>>> print(sum(10000))
>>> File "./Main.py", line 5, in sum
>>> return sum(num-1)+num
>>> File "./Main.py", line 5, in sum
>>> return sum(num-1)+num
>>> File "./Main.py", line 5, in sum
>>> return sum(num-1)+num
>>> [Previous line repeated 1887 more times]
>>> File "./Main.py", line 2, in sum
>>> if num == 1:
>>> RecursionError: maximum recursion depth exceeded
再帰の上限回数が決まっており、それを超えるとエラーを吐く(デフォルトでは1000回まで)
上限回数以上の再帰を行いたい場合は、以下のおまじないが必要
recursion.py
import sys
sys.setrecursionlimit(max_num) # 設定する上限回数をmax_numに入れる
しかし再帰の回数が多くなると計算時間が劇的に大きくなるので、そもそも再帰を使わず普通にfor文とかで同じ計算をした方がよい