• 18. 最大公约数算法


    题目:

    编写递归函数GCD(x,y),计算最大公约数。测试你的代码。

    思路:

    最大公约数的数学原理暂时略去不谈,只按照算法讲解代码思路。该算法计算两个数的最大公约数,函数需要两个参数,返回值是它们的最大公约数。现在有两个数 10 和 5, 传入函数,发现两个数都不为 0, 于是进行递归,将后面的数(这里是 5 )放到第一个参数位,将前面的数对后面的数取余得到的结果(这里是 10 % 5,结果是 0)放到第二个参数位,发现有一个参数是 0, 那么返回第一个参数(这里是 5 ),计算完毕。

    上面是第一个参数大于等于第二个参数的情况。当第一个参数小于第二个参数时,我们并不需要手动交换它们。例如:现在有两个数 5 和 10, 传入函数,发现两个数都不为 0 ,于是进行递归,将后面的数(这里是 10)放到第一个参数位,将前面的数对后面的数取余得到的结果(这里是 5 % 10 ,结果是 5)放到第二个参数位,我们发现它与上面的情况一样了。这里便是自动交换了两个参数,使大的在前,小的在后。

    代码:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int GCD(int x, int y) {
     5     if (0 == y) {
     6         return x;
     7     } else {
     8         return GCD(y, x % y);
     9     }
    10 }
    11 
    12 int main() {
    13     cout << "Enter two num : ";
    14     int a, b, gcd;
    15     while (cin >> a >> b) {
    16         gcd = GCD(a, b);
    17         cout << "GCD : " << gcd << endl;
    18     }
    19 
    20     return 0;
    21 }
  • 相关阅读:
    1.4 Arduino IDE
    1.3 选择适合的Arduino
    1.2为什么选择Arduino
    1.1什么是Arduino
    博文《arduino入门》预告
    Delphi实现HTMLWebBrowser实现HTML界面
    Delphi判断MDI子窗体是否被创建
    Delphi给窗体镶边-为控件加边框,描边,改变边框颜色
    Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄
    DELPHI实现类似仿360桌面的程序界面
  • 原文地址:https://www.cnblogs.com/Hello-Nolan/p/12336934.html
Copyright © 2020-2023  润新知