c语言 有一个分数序列: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13,… 求出这个序列的前20项之和。 输入 无 输出 题目描述中的前20项之和,保留4位小数。 请注意行尾输出换行。 样例输入 复制 无 样例输出 复制 32.6603
时间: 2024-12-20 10:29:22 浏览: 26
在 C 语言中,这个分数序列实际上是著名的斐波那契数列(Fibonacci sequence)除以它前面两个数构成的。斐波那契数列的第 n 项通常是 F(n) = F(n-1) + F(n-2),其中 F(1) = 1, F(2) = 1。我们可以编写一个递归或迭代的方式来计算这两个序列。
下面是使用迭代法求解前20项和的C代码:
```c
#include <stdio.h>
#include <math.h> // 用于计算浮点数的精度控制
// 计算斐波那契数列的第n项
int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1 || n == 2) return 1;
int t1 = 0, t2 = 1;
for (int i = 3; i <= n; i++) {
t1 = t2;
t2 = t1 + t2;
}
return t2;
}
// 计算分数序列的第n项
double fraction(int n) {
return (double)fibonacci(n) / fibonacci(n - 1);
}
int main() {
double total = 0;
for (int i = 1; i <= 20; i++) {
total += fraction(i);
}
printf("%.4f\n", total); // 保留4位小数并输出
return 0;
}
```
当运行上述代码时,它将输出斐波那契分数序列的前20项之和,保留四位小数。
阅读全文