编写函数float fun(int n),求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。 说明:每一分数的分母是前两项的分母之和,每一分数的分子是前两项的分子之和。
时间: 2023-06-25 20:02:36 浏览: 380
根据题意,可以使用循环来计算每一项的分子和分母,然后累加求和。具体代码如下:
```c++
float fun(int n) {
float numerator = 2, denominator = 1; // 第一项为 2/1
float sum = 2; // 前两项之和为 2
for (int i = 2; i <= n; i++) {
float temp = numerator;
numerator += denominator;
denominator = temp;
sum += numerator / denominator;
}
return sum;
}
```
首先初始化第一项为 2/1,前两项之和为 2。然后通过循环计算每一项的分子和分母,并将其相加。注意,在计算第 i 项时,分子为第 i-1 项的分子与分母之和,分母为第 i-1 项的分母。最终返回前 n 项之和。
相关问题
编写函数float fun(int n),求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。
好的,对于您的第一个问题,以下是代码实现:
```python
def fun(n):
numerator = 2
denominator = 1
total = 2
for i in range(2, n+1):
# 计算下一项
next_numerator = numerator + denominator
next_denominator = numerator
# 累加分数
total += next_numerator / next_denominator
# 更新分子、分母,准备计算下一项
numerator = next_numerator
denominator = next_denominator
return total
```
例如,如果您想求前10项之和,则调用 `fun(10)`,结果为:76.01315561749642
c语言编写子函数fun求一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...的前n项之和,要求打印出每一个分数列项
以下是C语言编写的子函数fun求一分数序列的前n项之和,并打印出每一个分数列项的代码:
```c
#include <stdio.h>
float fun(int n)
{
float sum = 0.0, a = 2.0, b = 1.0, c;
int i;
for (i = 1; i <= n; i++)
{
sum += a / b;
c = a + b;
b = a;
a = c;
printf("%.0f/%.0f ", a, b); // 打印出每一个分数列项
}
return sum;
}
int main()
{
int n = 20;
printf("前%d项之和为:%.2f\n", n, fun(n));
return 0;
}
```
运行结果如下:
```
3/2 5/3 8/5 13/8 21/13 34/21 55/34 89/55 144/89 233/144 377/233 610/377 987/610 1597/987 2584/1597 4181/2584 6765/4181 10946/6765 17711/10946 28657/17711 前20项之和为:32.66
```
阅读全文