Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để tìm G.C.D sử dụng đệ quy

Ước chung lớn nhất (GCD) của hai số là số lớn nhất chia cả hai.

Ví dụ:Giả sử chúng ta có hai số sau:45 và 27

63 = 7 * 3 * 3
42 = 7 * 3 * 2
So, the GCD of 63 and 42 is 21

Một chương trình để tìm GCD của hai số bằng cách sử dụng đệ quy được đưa ra như sau.

Ví dụ

#include<iostream>
using namespace std;
int gcd(int a, int b) {
   if (a == 0 || b == 0)
   return 0;
   else if (a == b)
   return a;
   else if (a > b)
   return gcd(a-b, b);
   else return gcd(a, b-a);
}
int main() {
   int a = 63, b = 42;
   cout<<"GCD of "<< a <<" and "<< b <<" is "<< gcd(a, b);
   return 0;
}

Đầu ra

GCD of 63 and 42 is 21

Trong chương trình trên, gcd () là một hàm đệ quy. Nó có hai tham số, tức là a và b. Nếu a hoặc b bằng 0, hàm trả về 0. Nếu a hoặc b bằng nhau, hàm trả về a. Nếu a lớn hơn b, hàm gọi đệ quy chính nó với các giá trị a-b và b. Nếu b lớn hơn a, hàm gọi đệ quy chính nó với các giá trị a và b-a.

Điều này được chứng minh bằng đoạn mã sau.

int gcd(int a, int b) {
   if (a == 0 || b == 0)
   return 0;
   else if (a == b)
   return a;
   else if (a > b)
   return gcd(a-b, b);
   else return gcd(a, b-a);
}

Một phương pháp khác để tìm GCD của hai số bằng cách sử dụng đệ quy như sau.

Ví dụ

#include <iostream>
using namespace std;
int gcd(int a, int b) {
   if (b == 0)
   return a;
   return gcd(b, a % b);
}
int main() {
   int a = 63, b = 42;
   cout<<"GCD of "<< a <<" and "<< b <<" is "<< gcd(a, b);
   return 0;
}

Đầu ra

GCD of 63 and 42 is 21

Trong chương trình trên, gcd () là một hàm đệ quy. Nó có hai tham số, tức là a và b. Nếu b lớn hơn 0, thì a được trả về hàm main (). Nếu không, hàm gcd () tự gọi đệ quy với các giá trị b và a% b.

Điều này được chứng minh bằng cách sử dụng đoạn mã sau.

int gcd(int a, int b) {
   if (b == 0)
   return a;
   return gcd(b, a % b);
}