c - 递归函数结构化简分数

标签 c function recursion fractions simplify

我在这里遇到了困难,需要一些帮助(我已经这样做了几个小时,但一无所获......)。 好的,所以我的问题是我无法弄清楚如何创建一个使用 typedef 返回简化分数的函数。换句话说,我想使用欧几里得方法来获得 GCD,如下所示:

int gcd(int a, int b)
{
    int rem;

    if ((rem = a % b) == 0) {
        return b;
    }
    else {
        return gcd(b, rem);
    }
}

然后简单地使用这样的东西:

int result = gcd(num, den);
int simple_num = num / result;
int simple_den = den / result;
printf("%d / %d", simple_num, simple_den); 

但是,我正在尝试使用称为分数的 typedef 来实现它,并使用一个函数来返回我的简化分子和分母。

typedef struct
{
    int numerator;
    int denominator;
} Fraction;

Fraction simplify(Fraction myFraction)
{
    return myFraction;
}

有人知道如何做到这一点吗?

最佳答案

这应该有效:

Fraction simplify(Fraction myFraction)
{
   int result = gcd(myFraction.numerator, myFraction.denominator);
   int simple_num = num / result;
   int simple_den = den / result;
   Fraction newFraction = {simple_num, simple_den};
   return newFraction;
}

关于c - 递归函数结构化简分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23715757/

相关文章:

php - 带有递归的 ArrayCollection::forAll

纸牌游戏算法

c - 在C程序中的“Array subscript is not an integer”

从 uchar* 转换为 uint* 会产生不可预测的结果

c - 我如何为该算法编写基本案例?

javascript - Node.js:意外省略 var 声明通过全局对象、错误或功能公开所有变量?

c - 用递归反转c中的字符串

c - 递增变量将我的指针更改为指针数组值

javascript - 如何在提交时结合两个功能?

PHP默认参数函数调用