値をドミノ倒しに求めることができますね。下のように2つ同時に再帰させる場合の動きも図で確認していきましょう。}}このようにそのまま解くと難しいような問題を徐々に簡単にしていき、最後に計算結果をあわせて求められていることが図からわかりますね*3。見栄え再帰の大きなメリットは複雑に行われる処理を簡単に書くことができ、プログラムの見栄えもよくなります。再帰を用いずに最大公約数を求めるプログラムは、下のように書くことができます。再帰呼び出しを行うと、スタック領域に再帰するために必要な情報が記録されていきます。メモリの量は無限ではないので、再帰を使いすぎるとスタック領域がなくなり、プログラムがクラッシュします。(スタックオーバーフローと呼ばれます。計算時間がかかる2つ目のデメリットは計算時間がかかることです。値を少し大きくしただけで計算に非常に時間がかかります*4。その理由として、下の図の紫色部分のように全く同じ計算を何度も何度も繰り返していることが挙げられます。そのため、実際に再帰を行う場合には初めて計算するときに計算結果を変数にメモ1回求めた値をメモから参照することで計算時間を抑えるテクニックを使います。今までは、再帰関数で何かしらの値を求めるようなプログラムばかりでした。応用して数字以外(文字とか)を処理するようなプログラムを紹介していきたいと思います。追記していきたいと思います。stringCopareは、下のように再帰を用いて表現することができます。関数と全く同じです*5。binarySearch二分探索も再帰を用いて書くことができます。}}二分探索について詳しい内容はこちらの記事に書いてあるので、興味がある方はぜひお読みください。5.練習問題では、実際に練習してみましょう!前半は再帰で書かれたプログラムの実行結果を求める問題で、後半は再帰を用いたプログラム作成を行う問題となっています。練習1自然数nに対して、次のように再帰的に定義される関数f(n)を考える。