Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมเรียกซ้ำหาค่าต่ำสุดและสูงสุดในอาร์เรย์ด้วย C++

ภาพรวม

ได้รับอาร์เรย์จำนวนเต็ม Arr[] เป็นอินพุต เป้าหมายคือหาค่าสูงสุด (Maximum) และต่ำสุด (Minimum) ในอาร์เรย์โดยใช้วิธีการเรียกซ้ำ (Recursive)

เนื่องจากใช้ Recursion จะเดินผ่านอาร์เรย์จนถึงความยาว=1 แล้วคืน A[0] เป็น Base case มิฉะนั้นเปรียบเทียบอิลิเมนต์ปัจจุบันกับค่าต่ำสุด/สูงสุดปัจจุบัน แล้วอัปเดตโดยเรียกซ้ำสำหรับอิลิเมนต์ถัดไป

ตัวอย่างสถานการณ์

อินพุต − Arr = {12, 67, 99, 76, 32};

เอาต์พุต − Maximum in the array: 99

คำอธิบาย − 99 เป็นค่าสูงสุด

อินพุต − Arr = {1, 0, -99, 9, 3};

เอาต์พุต − Minimum in the array: -99

คำอธิบาย − -99 เป็นค่าต่ำสุด

แนวทางการแก้ปัญหา

หาค่าต่ำสุด (Minimum)

  • รับอาร์เรย์ Arr[]
  • ฟังก์ชัน recforMin(int arr[], int len) คืนค่าต่ำสุดแบบเรียกซ้ำ
  • ตัวแปร minimum
  • หาก len == 1 ตั้ง minimum = arr[0] คืนค่า
  • มิฉะนั้น minimum = min(arr[len], recforMin(arr, len-1)) คืนค่า
  • พิมพ์ผลลัพธ์ใน main

หาค่าสูงสุด (Maximum)

  • รับอาร์เรย์ Arr[]
  • ฟังก์ชัน recforMax(int arr[], int len) คืนค่าสูงสุดแบบเรียกซ้ำ
  • ตัวแปร maximum
  • หาก len == 1 ตั้ง maximum = arr[0] คืนค่า
  • มิฉะนั้น maximum = max(arr[len], recforMax(arr, len-1)) คืนค่า
  • พิมพ์ผลลัพธ์ใน main

ตัวอย่างโค้ด C++ - หาค่าต่ำสุด

#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

ตัวอย่างโค้ด C++ - หาค่าสูงสุด

#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