再帰
クイックソートの一件で、再帰があまり理解できていないことが判明した。
なので再帰を勉強してみる。
インスパイヤ先↓
お気楽 Python プログラミング入門:第3回再帰定義と高階関数
とりあえず、簡単な例で階乗の計算をやってみる。
def rec(n): if n == 0: return 1 return n*rec(n-1) def rec2(n, ans = 1): if n == 0: return ans return rec2(n-1, n*ans) def main(): n = 10 ans = rec(n) print "rec() = " + str(ans) ans = rec2(n) print "rec2() = " + str(ans) if __name__ == "__main__": main()
結果
C:\practice\Python\2-23>python rec.py rec() = 3628800 rec2() = 3628800
一応解説。
関数rec()は自力で書いたもの、普通。
そして、今回初め知ったものが関数rec2()の書き方。
末尾再帰と言うらしい。
初めて聞いた(汗)
知識なさ杉。
なんか変な感じやけど、理屈を理解できると案外こっちの方が読みやすいかも。
再帰は懐が深そうな感じやけど、ちょっとずつ理解していきたい。