C++で配列の最小要素と最大要素を見つけるための再帰プログラム
入力として整数配列Arr[]が与えられます。目標は、再帰的な方法を使用して、配列の中から最大要素と最小要素を見つけることです。
再帰を使用しているため、length =1に達するまで配列全体をトラバースし、ベースケースを形成するA[0]を返します。それ以外の場合は、現在の要素を現在の最小値または最大値と比較し、後の要素の再帰によってその値を更新します。
このためのさまざまな入出力シナリオを見てみましょう-
入力 − arr ={12,67,99,76,32};
出力 −配列の最大値:99
説明 −すべての要素の中で99が最大です。
入力 − arr ={1,0、-99,9,3};
出力 −配列の最小値:-99
説明 −すべての要素のうち、-99が最小です。
以下のプログラムで使用されているアプローチは次のとおりです
最小値を見つけるために
-
配列Arr[]を入力として受け取ります。
-
関数recforMin(int arr []、int len)は、入力配列とその長さを受け取り、再帰を使用して配列内の最小値を返します。
-
整数変数を最小にする
-
現在のインデックスlenが1の場合、minimum =arr [0]を設定し、minimumを返します。
-
それ以外の場合は、minimum =arr [len]またはrecforMin(arr、len-1)の最小値を設定し、それを返します。
-
最後に、最小要素が返されます。
-
メイン内で得られた結果を印刷します。
最小値を見つけるために
-
最大値を見つけるために
-
配列Arr[]を入力として受け取ります。
-
関数recforMax(int arr []、int len)は、入力配列とその長さを受け取り、再帰を使用して配列の最大値を返します。
-
整数変数の最大値を取ります。
-
現在のインデックスlenが1の場合、maximum =arr [0]を設定し、maximumを返します。
-
それ以外の場合は、最小値=arr [len]またはrecforMax(arr、len-1)の最大値を設定し、それを返します。
-
最後に、最大の要素が返されます。
-
メイン内で得られた結果を印刷します。
再帰を使用して最小値を見つける
例
#include <iostream> using namespace std; int recforMin(int arr[], int len){ int minimum; if (len == 1){ minimum=arr[0]; return minimum; } else{ return minimum=arr[len]<recforMin(arr,len-1)?arr[len]:recforMin(arr,len-1); } } int main(){ int Arr[] = {-89,98,76,32,21,35,100}; int length = sizeof(Arr)/sizeof(Arr[0]); cout <<"Minimum in the array :"<<recforMin(Arr, length); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます
Minimum in the array :-89
再帰を使用して最小値を見つける
例
#include <iostream> using namespace std; int recforMax(int arr[], int len){ int maximum; if (len == 1){ maximum=arr[0]; return maximum; } else{ return maximum=arr[len]>recforMax(arr,len-1)?arr[len]:recforMax(arr,len-1); } } int main(){ int Arr[] = {-89,98,76,32,21,35,100}; int length = sizeof(Arr)/sizeof(Arr[0]); cout <<"Maximum in the array :"<<recforMax(Arr, length); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます
Maximum in the array :-100
-
C++の配列で最大GCDのペアを検索します
正の整数の配列があるとします。私たちのタスクは、GCD値が最大である配列から整数のペアを見つけることです。 A ={1、2、3、4、5}とすると、出力は2になります。ペア(2、4)にはGCD 2があり、他のGCD値は2未満です。 この問題を解決するために、各要素の除数の数を格納するためのカウント配列を維持します。除数を数えるプロセスには、O(sqrt(arr [i]))の時間がかかります。全体をトラバースした後、最後のインデックスから最初のインデックスまでカウント配列をトラバースできます。要素が1より大きい値が見つかった場合、これは2つの要素の約数であり、最大GCDでもあることを意味します。
-
C++で指定された配列の要素の階乗のGCDを検索します
N個の要素を持つ配列Aがあるとします。配列のすべての要素の階乗のGCDを見つける必要があります。要素が{3、4、8、6}であるとすると、階乗のGCDは6です。ここでトリックを確認します。 2つの数値のGCDは、両方の数値を除算する最大の数値であるため、2つの数値の階乗のGCDは、最小の数値自体の階乗の値です。だから3の公約数!と5! 3です! =6. 例 #include <iostream> using namespace std; long fact(int n){ if(n <= 1) return