プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データ構造における再帰の原則


再帰は、関数がそれ自体を呼び出すプロセスです。再帰を使用して、大きな問題を小さなサブ問題に解決します。覚えておかなければならないことの1つは、各サブ問題が同じ種類のパターンに従っている場合、再帰的アプローチを使用できるのは私たちだけであるということです。

再帰関数には2つの異なる部分があります。ベースケースと再帰ケース。基本ケースは、繰り返しのタスクを終了するために使用されます。基本ケースが定義されていない場合、関数は(理論的には)無限に繰り返されます。

コンピュータプログラムでは、1つの関数を呼び出すと、プログラムカウンターの値は、関数領域にジャンプする前に内部スタックに格納されます。タスクが完了すると、アドレスがポップアウトされてプログラムカウンターに割り当てられ、タスクが再開されます。再帰呼び出し中に、アドレスを複数回格納し、次の関数呼び出しステートメントにジャンプします。 1つの基本ケースが定義されていない場合、それは何度も繰り返され、アドレスをスタックに格納します。スタックにスペースがなくなると、「内部スタックオーバーフロー」としてエラーが発生します。

再帰呼び出しの1つの例は、数値の階乗を見つけることです。数の階乗n=n! n *(n-1)!と同じですが、n *(n-1)*(n-2)!と同じです。したがって、階乗が関数の場合、何度も呼び出されますが、引数は1減少します。引数が1または0の場合、1が返されます。これが再帰の基本ケースである可能性があります。

#include<iostream>
using namespace std;
long fact(long n){
   if(n <= 1)
   return 1;
   return n * fact(n-1);
}
main(){
   cout << "Factorial of 6: " << fact(6);
}

出力

Factorial of 6: 720

  1. データ構造の最小スパニングツリー

    スパニングツリー は、最小数のエッジで接続されたすべての頂点を持つ無向グラフのサブセットです。 すべての頂点がグラフで接続されている場合、少なくとも1つのスパニングツリーが存在します。グラフには、複数のスパニングツリーが存在する場合があります。 最小スパニングツリー 最小スパニングツリー(MST) は、接続された重み付き無向グラフのエッジのサブセットであり、すべての頂点を可能な限り最小の合計エッジ重みで接続します。 MSTを導出するには、プリムのアルゴリズムまたはクラスカルのアルゴリズムを使用できます。したがって、この章ではプリムのアルゴリズムについて説明します。 すでに説明したように、

  2. データ構造における二分木表現

    ここでは、コンピュータのメモリでバイナリツリーを表現する方法を説明します。表現するには2つの異なる方法があります。これらは配列とリンクリストを使用しています。 このようなツリーが1つあるとします- 配列表現は、レベル順の方法を使用して要素をスキャンすることにより、ツリーデータを格納します。したがって、ノードをレベルごとに格納します。一部の要素が欠落している場合は、空白のままにします。上記のツリーの表現は以下のようになります- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 5