再帰とループの違いとは?分かりやすく解説!

この記事には、アフィリエイト広告を利用しています。

スポンサーリンク


再帰とループの主な違いは、再帰は同じ関数内で関数を呼び出す仕組みであり、ループは与えられた条件が真になるまで一連の命令を何度も実行するのに役立つ制御構造であることです。

再帰とループは2つのプログラミングの概念です。

この2つの技術は、小さなプログラムから複雑なプログラムまで開発するのに役立ちます。

スポンサーリンク

再帰とは

関数が関数の中で自分自身を呼び出すことを再帰といいます。

再帰を使ったプログラムの例として、階乗の計算があります。

n! = n * (n-1)!, if n>0

n! =1, if n=0;

図1:Javaによる階乗プログラム

上記のプログラムによれば,Factorialのオブジェクトが生成される。

そして、そのオブジェクトを使って、factorial メソッドを呼び出す。

そして、そのメソッドは値4を取得する。

次に、elseセクションが実行される。

続いて、factial (3)を呼び出す。

そして、elseセクションが実行される。

階乗(2)を呼び出す。

次に、elseセクションが実行される。

階乗(1)を呼び出し、elseセクションが再び実行される。

階乗(0)を呼び出す。

今度はnは0であり、1を返す。

最後に、1x2x3x4 =24が返され、その値が画面に表示される。

このように、階乗関数は何度も何度も自分自身を呼び出す。

ループとは


あるコードのブロックを繰り返し実行することが必要な場合があります.プログラミング言語では、一連の命令を実行するためにループと呼ばれる制御構造を用意しています

ループは、ブロック内の文を次々と実行する。

ループには、whileループ、forループ、do whileループの3種類があります。

また、反復処理もループの一種である

While Loop

whileループにはテスト式があります。

この式が真であれば、whileループの中のステートメントが実行される。

文の終わりには、再びテスト式をチェックする。

そして、この処理をテスト式が偽になるまで繰り返す。

テスト式がfalseになると、whileループは終了します。

そして、whileループの後の最初のステートメントに制御が移る。

上のプログラムでは、xは5であり、10より小さい。

10より小さいので、表示される。

次に、xの値が増加する。

今度は、xが6で、これも10より小さいので、printされる。

そして、再びxの値が増加する。

こうして、この処理を繰り返す。

xが10になったとき、条件は偽となり、ループは終了する。

For Loop

Forループには、初期化、テスト式、更新が含まれる。

初期化式は一度だけ実行される。

その後、test式を評価する。

そして、test式を評価し、それが真であれば、forループの中のステートメントが実行される。

ループの最後には、更新された式が評価される。

この処理を、test式がfalseになるまで繰り返す。

falseになったら、forループは終了する。

そして、forループの次の文に制御が移る。

上のforループでは、xの値は1であり、5未満です。

5より小さいので、この値を表示する。

次に、xの値が1つ増え、xの値は2になった。

したがって、印刷される。

そしてまた、xの値は1だけ増加し、今度はxは3です。

このプロセスが繰り返される。

xが6になると、テスト条件が偽になり、ループが終了する。

Do While Loop

Do Whileループは、Whileループと似ているが、ループ文を実行した後に条件を確認する。

そのため、条件が真であっても偽であっても、少なくとも1回はループが実行される。

ここでは、ループ実行後に条件チェックを行う。

条件が真であれば、再びループ文が実行される。

この処理は、条件が偽になるまで繰り返される。

Main Difference -  Recursion vs  Loop 図4: Do Whileループを用いたプログラム

xの値が最初は5です。

Do Whileループが実行され、値5が表示される。

その後、xは6になる。

これは10より小さい。

10より小さいので、6がプリントされる。

次に、xは7になる。

これも10より小さい。

そして、この作業を繰り返す。

xが9になると、値がプリントされる。

しかし、xが10になると、条件は偽になる。

したがって、ループは終了する。

例えば、xが最初は20であったとする。

20と表示される。

その後、xがインクリメントされ、xは21になる。

このとき、テスト条件は偽です。

したがって、ループを終了する。

値20は10より大きいので、テスト条件は偽です。

しかし、このループは1回しか実行されない。

したがって、do whileループは少なくとも一度は実行される。

再帰とループの違い

定義

再帰とは、同じ関数の中で関数を呼び出す方法です。

これに対してloopは、プログラム内でコードのブロックを繰り返し実行するための制御構造です。

これらの定義には、再帰とloopの根本的な違いが含まれています。

速度

recursionとloopの大きな違いは速度です。

recursionの実行速度は遅い。

しかし、loopはrecursionより速く実行される。

スタック

再帰処理では、関数が呼び出されたときにローカル変数を格納するためにスタックを使用します。

しかし、ループではスタックを使用しない。

コンディション

終了条件がない場合は、無限ループになる。

しかし、条件が偽にならない場合は無限ループになる。

ここも再帰とループの違いです。

スペースコンプレックス

さらに、再帰的プログラムの空間複雑度は、ループよりも高い。

コードの読みやすさ

再帰とループのもう一つの違いは、再帰を使ったプログラムの方がループを使ったプログラムよりも可読性が高いということである

結論

再帰とループの違いは、再帰が同じ関数内で関数を呼び出す仕組みであるのに対し、ループは与えられた条件が真になるまで何度も命令群を実行できる制御構造であることである

タイトルとURLをコピーしました