AtCoder上にある問題のうち、AtCoder Problemsでdiff 800以上と判定されているものを順番に解いていく企画。
基本的な考え方は全てコード中のコメントに入れてあるので、参照のこと。
出典:
AtCoder Beginner Contest 084 C – Special Trains
特に深い理由はないが、たまにはいいだろうと再帰関数で解いてみた。
このような、再帰関数で得た値を再利用しない形の関数は末尾再帰と呼ばれる。より具体的には、return分で再帰関数をそのまま帰すような形のものである。
ちなみに末尾再帰で書くと、ごく簡単な書き換えで通常のループ処理にすることができるので、言語によっては勝手に最適化をしてくれることがある(関数呼び出しのコストやメモリ使用量の削減につながる)……のだが、残念ながらPythonでは現在のところしないらしい……。