首页 > 解决方案 > 使用函数在一行代码中查找 GCD

问题描述

问题是你编写了一个程序来找到两个数字的 GCD,你应该定义一个函数来做到这一点,但挑战是函数体不应该超过 1 行,你只能使用一个分号!到目前为止,我尝试过并写了这个。你有什么主意吗?

#include <stdio.h>

int bmm(int m, int n) {
    while(m!=n) int a = m > n ? m -= n : n -= m;
    return m;
}

int main() {
    int m, n;
    scanf("%d%d", &m, &n);
    if (m < 0)m = -m;
    if (n < 0)n = -n;
    printf("%d", bmm(m,n));

    return 0;
}

标签: calgorithm

解决方案


您可以以递归方式在一行中解决它:

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

推荐阅读