- cont代表连分数的系数(cont[0]代表上图的a0,)。
- 返回一个长度为2的数组[n, m],使得连分数的值等于n / m,且n, m最大公约数为1。
代码
#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;
}
我写的代码
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;
}