分式化简

文章目录


在这里插入图片描述

  • cont代表连分数的系数(cont[0]代表上图的a0,)。
  • 返回一个长度为2的数组[n, m],使得连分数的值等于n / m,且n, m最大公约数为1。

代码

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */

#define SWAP(a,b) {int c = a;a = b;b = c;}
int* fraction(int* cont, int contSize, int* returnSize){
    int i;
    int *re = (int*)calloc(2, sizeof(int));
    *returnSize = 2;
    for(i = contSize - 2, re[0] = cont[contSize-1], re[1] = 1;i >= 0;--i)
    {
        SWAP(re[0], re[1]);
        re[0] = cont[i] * re[1] + re[0];
    }
    return re;
}



我写的代码

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* fraction(int* cont, int contSize, int* returnSize){
    *returnSize=2;
    int *ret =(int *)malloc(sizeof(int)*2);
    ret[1]=1;
    ret[0]=cont[contSize-1];
    for(int i=contSize-2;i>=0;i--)
    {
        int temp=ret[0];
        ret[0]=cont[i]*ret[0]+ret[1];
        ret[1]=temp;
    }
    return ret;
}



在这里插入图片描述

发布了558 篇原创文章 · 获赞 295 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/zhoutianzi12/article/details/105164731