まず、再帰関数を使用して最大要素を見つける方法を説明します。以下のCプログラムをご覧ください。
#include <stdio.h>
int findLargest(int arr[], int size) {
// ベースケース: 配列のサイズが1の場合、その要素を返す
if (size == 1) {
return arr[0];
}
// 配列の最後の要素を取得
int last = arr[size - 1];
// 最後の要素を除いた部分配列の最大要素を再帰的に求める
int restMax = findLargest(arr, size - 1);
// 最後の要素と部分配列の最大要素を比較し、大きい方を返す
if (last > restMax) {
return last;
} else {
return restMax;
}
}
int main() {
int arr[] = {10, 5, 8, 20};
int size = sizeof(arr) / sizeof(arr[0]);
int largest = findLargest(arr, size);
printf("配列の最大要素は %d です。", largest);
return 0;
}
このプログラムでは、findLargest
という再帰関数を定義しています。関数は配列と配列のサイズを受け取り、最大要素を返します。再帰的に関数を呼び出すことで、配列を部分配列に分割し、最大要素を求めます。
findLargest
関数では、ベースケースとして配列のサイズが1の場合を処理しています。配列のサイズが1の場合、その要素を最大要素として返します。
それ以外の場合、配列の最後の要素を取得し、残りの部分配列の最大要素を再帰的に求めます。最後の要素と部分配列の最大要素を比較し、大きい方を最大要素として返します。
上記のプログラムを実行すると、配列 {10, 5, 8, 20}
の最大要素である 20
が表示されます。
この方法を使用すると、再帰を活用して簡潔なコードで配列内の最大要素を見つけることができます。ぜひお試しください。