这里是我用小数点做的,它有效:
double continuedFractionDecimal(int a[], int size)
{
double fraction = a[size - 1];
for(int i = size - 2; i >= 0; i--)
{
fraction = a[i] + 1/fraction;
}
return fraction;
}
我的问题是你如何使用整数分数运算做同样的事情:分子和分母。我需要非递归地执行它,并且所有内容都应该在函数内完成,而不需要包含任何额外的操作。一旦你知道怎么做,我就不会认为这很难,但对我而言,我无法想象它,我感谢任何指导......谢谢你。< / p>
答案 0 :(得分:2)
如果我正确理解continued fractions,则无需计算分子和分母的GCD。
以下程序完成工作:
#include <iostream>
#include <utility>
std::pair<int, int> getFraction(int a[], int size)
{
int n = 1;
int d = a[size-1];
for(int i = size - 2; i >= 0; i--)
{
int nextd = d*a[i] + n;
n = d;
d = nextd;
}
// When we are done, d is the numerator and n is the denominator.
return std::make_pair(d, n);
}
int main()
{
int a[] = {4, 2, 6, 7};
int size = sizeof(a)/sizeof(a[0]);
std::pair<int, int> f = getFraction(a, size);
std::cout
<< "Numerator: " << f.first
<< ", Denominator: " << f.second << std::endl;
}
运行程序的输出:
Numerator: 415, Denominator: 93