递归函数结构简化了分数

时间:2014-05-17 20:26:01

标签: 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); 

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

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

Fraction simplify(Fraction myFraction)
{
    return myFraction;
}

任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

这应该有效:

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;
}