C++ 程序:使用递归查找最大公约数


2023 年 1 月 22 日, Learn eTutorial
2186

什么是 HCF/GCD?

HCF 或最大公因子定义为能完美地整除所有数字的最大数字。最大公因子 (HCF) 也称为最大公约数 (GCD)。

通过除法求 HCF

在此程序中,我们使用除法方法通过以下步骤查找 HCF 或 GCD:

  • 步骤 1:用较小的数除较大的数并检查余数。
  • 步骤 2:然后,将上一步的余数作为新的除数,将上一步的除数作为新的被除数,再次执行长除法。
  • 步骤 3:继续除法,直到余数达到零,然后将最后一个除数作为 HCF 或 GCD。

C++ 中的递归

递归可以定义为反复调用自身直到满足条件的函数。

如何实现 C++ 程序来查找 HCF?

要求用户输入两个正整数并将数字读入变量 n1n2。定义一个递归函数 HCF() 来查找数字的最大公约数。然后将输入的数字传递给 HCF 函数。在该函数中,使用 `if` 条件语句检查条件 n2 != 0。然后,通过使用参数 n2, n1 % n2 调用函数并返回该值来递归执行操作。
return hcf(n2, n1 % n2); 否则将值 n1 返回给主函数。return n1;

算法

步骤 1: 调用头文件 iostream

步骤 2: 使用 namespace std.

步骤 3: 定义一个函数 HCF();
              if (n2 != 0)
              return hcf(n2, n1 % n2);
              else
              return n1

步骤 4: 打开整数类型的主函数;int main()。

步骤 5: 声明整数变量;n1n2

步骤 6: 打印消息以输入两个正整数;

步骤 7: 将值读入变量 n1n2

步骤 8: 调用函数 HCF(int n1, int n2);

步骤 9: 退出;
 

C++ 源代码

                                          #include <iostream>
using namespace std;

int hcf(int n1, int n2);

int main()
{
   int n1, n2;

   cout << "Enter two positive integers: ";
   cin >> n1 >> n2;

   cout << "H.C.F of " << n1 << " & " <<  n2 << " is: " << hcf(n1, n2);

   return 0;
}

int HCF(int n1, int n2)
{
    if (n2 != 0)
       return HCF(n2, n1 % n2);
    else 
       return n1;
}
                                      

输出

Enter two positive integers: 8
12
H.C.F of 8 & 12 is: 4