题解 | #最大公约数#

最大公约数

https://www.nowcoder.com/practice/20216f2c84bc438eb5ef05e382536fd3

#include<iostream>

using namespace std;

/*
* a,b最大公约数g --> b, a mod b 最大公约数
* 不断缩小数据规模
* 直到缩小成求某个非零数与零的最大公约数
* 非零数即为所求
*/

int GCD(int a, int b) {
    while (a != 0 && b != 0) {
        return GCD(b, a % b); //每次要交换两个位置,否则会陷入死循环
        //其实条件只要b!=0就可以,因为如果a=0,b!=0;下一轮就是a=b!=0,b=a%b=0
        //用递归是个好思想
        //不能mod 0
    }
    return a + b;
}

int main() {
    int a, b;
    while (scanf("%d %d", &a, &b) != EOF) {
        printf("%d\n", GCD(a, b));
    }
}

递归很好用的!

全部评论

相关推荐

感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务