C言語:再帰を使用して配列内の最大要素を見つける方法


まず、再帰関数を使用して最大要素を見つける方法を説明します。以下の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 が表示されます。

この方法を使用すると、再帰を活用して簡潔なコードで配列内の最大要素を見つけることができます。ぜひお試しください。