zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    android开发 软键盘出现后 防止EditText控件遮挡 总体平移UI
    jQuery中this与$(this)的差别
    纯手写wcf代码,wcf入门,wcf基础教程
    JavaScript权威指南第01章 JavaScript 概述
    Python
    微信支付界面中文乱码问题
    EasyUI基础入门之Pagination(分页)
    Maximum Subarray
    CF1063F String Journey
    排序
  • 原文地址:https://www.cnblogs.com/Hello-Nolan/p/12336934.html
Copyright © 2011-2022 走看看