Fibonacci数列分式
文章目录
问题
所谓Fibonacci数列分式即它的分式各项都由Fibonacci数列中的数组成,分母是前项、分子是后续项。
在提示符n:后,用户输入一个整数n,程序以sum=X.YZ(结果保留2位小数)的形式给出Fibonacci数列分式2/1+3/2+5/3+8/5+…前n项之和 。
注意:
①程序输出结果后,继续显示提示符n:,等待用户的下一次输入,并根据输入n输出结果sum=X.YZ,直到用户输入的值不大于0为止;
②当用户在提示符n:后输入的值小于等于0,程序输出Bye!后结束。
代码
#include <iomanip>
#include "iostream"
#define ISINT(A) (double(int(A)) == A)
using namespace std;
void fibonacci(int n, double *arr) {
n = 2 * n;
for (int i = 0; i < n + 1; ++i) {
if (i == 0 || i == 1) {
arr[i] = 1;
} else
arr[i] = arr[i - 2] + arr[i - 1];
}
}
void fun(int n) {
double arr[2 * n + 1];
fibonacci(n, arr);
double sum = 0;
for (int i = 1; i <=n; i++) {
sum += (arr[i + 1] / arr[i]);
}
cout << "sum=" << fixed << setprecision(2) << sum << endl;
}
int main() {
while (true) {
cout << "n:";
int n;
cin >> n;
if (n > 0) {
fun(n);
} else {
cout << "Bye!" << endl;
break;
}
}
return 0;
}