Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình đệ quy tìm phần tử nhỏ nhất và lớn nhất của mảng trong C++


Cho mảng nguyên Arr[] làm đầu vào. Mục tiêu là tìm phần tử lớn nhất và nhỏ nhất trong mảng bằng phương pháp đệ quy.

Vì dùng đệ quy, duyệt toàn mảng đến khi length=1 thì trả về A[0] (trường hợp cơ sở). Ngược lại so sánh phần tử hiện tại với min/max hiện tại và cập nhật bằng đệ quy cho các phần tử sau.

Các trường hợp đầu vào/đầu ra

Đầu vào - Arr = {12,67,99,76,32};

Đầu ra - Phần tử lớn nhất: 99

Giải thích - Trong tất cả phần tử, 99 là lớn nhất.

Đầu vào - Arr = {1,0,-99,9,3};

Đầu ra - Phần tử nhỏ nhất: -99

Giải thích - Trong tất cả phần tử, -99 là nhỏ nhất.

Phương pháp sử dụng trong chương trình dưới đây

Tìm phần tử nhỏ nhất

  • Nhập mảng Arr[].

  • Hàm recforMin(int arr[], int len) trả về min trong mảng bằng đệ quy.

  • Biến minimum.

  • Nếu len == 1: minimum = arr[0], return minimum.

  • Ngược lại: minimum = min(arr[len], recforMin(arr, len-1)), return.

  • In kết quả trong main.

Tìm phần tử lớn nhất

  • Nhập mảng Arr[].

  • Hàm recforMax(int arr[], int len) trả về max trong mảng bằng đệ quy.

  • Biến maximum.

  • Nếu len == 1: maximum = arr[0], return maximum.

  • Ngược lại: maximum = max(arr[len], recforMax(arr, len-1)), return.

  • In kết quả trong main.

Ví dụ mã tìm min

#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 <<"Phần tử nhỏ nhất trong mảng :"<<recforMin(Arr, length);    return 0; }

Đầu ra

Phần tử nhỏ nhất trong mảng :-89

Ví dụ mã tìm max

#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 <<"Phần tử lớn nhất trong mảng :"<<recforMax(Arr, length);    return 0; }

Đầu ra

Phần tử lớn nhất trong mảng :100