再帰関数、高階関数(こうかいかんすう)
あまり頭になじまない部分だったので遠くで見ているだけだったけど、ちょっと調べてみた。
本当は関数型な言語で勉強したほうが良いのだろうけど、いったんはpythonベース。
再帰関数(recursive function)
自分で自分を呼び出す関数。
階乗(factorial)とか。
def fact(n): if n == 0: return 1 return n*fact(n-1) print(fact(5)) # 120
高階関数(higher-order function)
関数を引数(argument),戻り値(return)とする関数。
- 高階関数無し
# リストの定義 list1 = list(range(1, 6)) # リストの要素を2倍にする関数 def double(x): return x*2 # forを使って、先ほど定義した関数を利用。 print([double(i) for i in list1]) # [2, 4, 6, 8, 10]
- 高階関数あり
# リストの定義 list1 = list(range(1, 6)) # リストの要素を2倍にする関数 def double(x): return x*2 # リストに対し、先ほど定義した「リストの要素を2倍にする関数」を引数として指定し、利用する関数を定義。 def map2(func, lst): list2 = [] for x in lst: list2.append(func(x)) return list2 # 関数を利用する関数に、「リストの要素を2倍にする関数」とリストを引数として与えてみる。 print(map2(double, list1)) # [2, 4, 6, 8, 10]
高階関数有り&map有り&lambda有り
# リストの定義 list1 = list(range(1, 6)) print(list(map(lambda x:x*2, list1))) # [2, 4, 6, 8, 10]
- 参考 : python3と高階関数 - Qiita
- 参考 : お気楽 Python プログラミング入門 第 3 回 再帰定義と高階関数
- https://qiita.com/To_BB/items/9553121d98be1c71048a
- JavaScriptでの説明だけど、そちらもそのうち理解したい…。