数学の問題などを解いていて、どうしても分からない問題があった時に、「わかるまで一日でも一週間でも考え続ける」というのも意味のある行為だとは思う。しかし数学科の研究などならいざしらず、たかだか試験勉強としては少しやりすぎという感じもする。
だから、30分考えてもわからなければ解答を見てしまうとか、タイムリミットを決めて問題演習に取り組むべきである。しかし、解答を見たあとに何をするかは議論の余地がある。
多くの人は、解答を見たあとすぐに自分で解いてみようとする。中には、ひと目で分からない問題であればすぐに答えを見てしまっても良いという主張もある。それは、暗記による数学を攻略することを提唱している和田秀樹さんもそうだし、囲碁でも同じような議論があり、詰め碁で数分考えて分からないなら答えを見て覚えてしまって良いというプロは多い。
しかしそれは、超のつく基礎問題に限るという条件がつく。
詰碁の例でいうと、「実戦的な詰碁は、大抵が超簡単なものであり、それが超高速で読めることに意味がある。だから、簡単な問題については形を暗記するレベルにすべきである。従って、基本詰碁は読むものですらなく、覚えるものだ」という根拠がある。(またそうすることで、詰碁以外でも急所が見えるようになる)数学などでも、実際の問題は基本的な問題の組み合わせなど応用にすぎないから、基本的な問題については問題を見た瞬間に答えがわかるようにすべきである。だから数学は暗記だといえるのである。どの分野でも、基礎ほど重要なことない。
だから、ある程度複合的で難しい問題について、答えを見たあとにすぐに解くことには意味がない。
勉強の意味は、次に同じような問題を見た時に、解法の当たりがつくようにそのエッセンスを身体に染み込ませることであって、問題自体を記憶することではない。複合的な問題になれば、同じ問題が出ることはないのだから、覚えることに全く意味がないからである。
その場で理解して、その場で実践出来ることは当たり前である。だから、その作業によって学んだと満足してしまう分悪い。もちろん時間も無駄である。
私が今取り組んでいる競技プログラミングという分野では解説ACという用語がある。これが何を意味するかというと、分からない問題について、自力で解くのではなく、解説を読んでから正答することである。これは極めて悪い行為だと思っている。特に、競技プログラミングの場合は、正答を提出してしまうと、正答しましたという記録がコンテストサイト上に残り、再び解くモチベーションが奪われてしまう。数学の問題集ならまだ、2周目をやるという方法もある(そして、同じ問題集を何周もすることは良い勉強法だ)が、競技プログラミングの場合はそれがない分だけ悪い。中には、他人のプログラムをそのまま書き写して提出している人もいて、プログラミングの写経レベルから抜け出せない人に同情すら覚える。
ではどうすれば良いかというと、私は、解説を見たあとは、紙に図や式を書いたりして、その解説自体をしっかりと理解する。この時点で十分に勉強になっているとは思うが、それから1週間とか2週間とか日を置いてから、戻って自力で解き直してみる。その時に解けるならば、学習効果があったという証拠だし、2ヶ月後3ヶ月後にも、その学習効果は生き続けるはずだ。しかし解けない場合でも、もう一度解説を読んで理解すればいい。いずれにしろ良い復習効果が得られる。これによって記憶がより強固になる。いずれにしろ、どこかの段階で自力で解くということが必要だと思っている。なぜかというと、試験やコンテストでは解説を見ることは出来ないからだ。練習の時点で自力で解けないものが、本番で解けるわけがない。