はじめに
この実験では、再帰を使って配列内の最大要素を見つけるプロセスを学びます。C プログラムは、ユーザーに配列のサイズを入力するように促し、次に配列の要素を入力し、その後、配列の最大要素を出力します。
この実験では、再帰を使って配列内の最大要素を見つけるプロセスを学びます。C プログラムは、ユーザーに配列のサイズを入力するように促し、次に配列の要素を入力し、その後、配列の最大要素を出力します。
まず、~/project/ ディレクトリに main.c という名前の新しいファイルを作成します。次に、以下のコードをコピーしてファイルに貼り付けます。このコードには、この実験を完了するために必要なすべてのコードが含まれています。
#include<stdio.h>
#define MAX 100
int getMaxElement(int []); // takes array of int as parameter
int size;
int main()
{
printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
int arr[MAX], max, i;
printf("\n\nEnter the size of the array: ");
scanf("%d", &size);
printf("\n\nEnter %d elements\n\n", size);
for(i = 0; i < size; i++)
{
scanf("%d", &arr[i]);
}
max = getMaxElement(arr); // passing the complete array as parameter
printf("\n\nLargest element of the array is %d\n\n", max);
printf("\n\n\t\t\tCoding is Fun!\n\n\n");
return 0;
}
int getMaxElement(int a[])
{
static int i = 0, max =- 9999; // static int max=a[0] is invalid
if(i < size) // till the last element
{
if(max < a[i])
max = a[i];
i++; // to check the next element in the next iteration
getMaxElement(a); // recursive call
}
return max;
}
この C プログラムは、2 つの関数から構成されています。main() と getMaxElement() です。
main()arr という名前の配列を宣言し、変数を初期化します。配列の最大要素を格納するための max と、関数の反復処理を維持するための i です。getMaxElement() 関数を呼び出し、arr という名前の配列をパラメータとして渡します。max に格納されている配列の最大要素を出力します。getMaxElement()これは、配列の最大要素を返す再帰関数です。
i を宣言し、0 で初期化し、配列の最大要素を格納するための静的な値 max を宣言し、非常に小さな値 -9999 で初期化します。i の値が配列のサイズより小さいかどうかを確認します。i 番目の要素の値が max の現在の値より大きい場合、max の値を配列の i 番目の要素で更新します。i を次の要素に設定し、getMaxElement() 関数を呼び出し、この関数を再帰的にします。コードをコンパイルして実行するには、~/project/ ディレクトリでターミナルを開き、以下の手順に従います。
gcc main.c と入力します。./a.out と入力します。ENTER キーを押します。ENTER キーを押します。#include<stdio.h>
#define MAX 100
int getMaxElement(int []); // int 型の配列をパラメータとして受け取る
int size;
int main()
{
printf("\n\n\t\tLabEx - 学ぶのに最適な場所\n\n\n");
int arr[MAX], max, i;
printf("\n\n配列のサイズを入力してください:");
scanf("%d", &size);
printf("\n\n%d個の要素を入力してください\n\n", size);
for(i = 0; i < size; i++)
{
scanf("%d", &arr[i]);
}
max = getMaxElement(arr); // 完全な配列をパラメータとして渡す
printf("\n\n配列の最大要素は %d です\n\n", max);
printf("\n\n\t\t\tコーディングは楽しい!\n\n\n");
return 0;
}
int getMaxElement(int a[])
{
static int i = 0, max =- 9999; // static int max=a[0] は無効
if(i < size) // 最後の要素まで
{
if(max < a[i])
max = a[i];
i++; // 次の反復で次の要素をチェックするため
getMaxElement(a); // 再帰呼び出し
}
return max;
}
素晴らしい仕事です!再帰を使って配列内の最大要素を見つける方法に関するこの実験を無事に完了しました。これで、再帰を使って配列の最大要素を見つける方法を十分に理解しているはずです。おめでとうございます!