c - 使用函数在一行代码中查找 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;
}
解决方案
您可以以递归方式在一行中解决它:
int gcd(int a, int b)
{
return (b == 0 ? a : gcd(b, a % b));
}
推荐阅读
- java - 在spring boot rest api控制器中调用单例类
- c++ - 使用模板逻辑在运行时从基类转换为派生类
- python - binom.pmf 只返回零
- javascript - 为动态创建的按钮创建事件
- php - 从数组中获取正确的数据
- c++ - 用特定值填充数组的边缘
- android-studio - 如何从 android studio 的 makefile 中删除库?
- python - 如何在 Django 中创建一个循环遍历列表中的元素的范围 for 循环
- django - 如何将电子邮件和密码与我保存在 Django 数据库中的电子邮件和密码进行比较
- javascript - 如何使用下面的代码在同一页面上制作多个倒数计时器?