编写子函数fun求一分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13...的前n项之和,要求打印出每一个分数列项。
时间: 2024-12-14 20:28:30 浏览: 4
编写一个名为`fun`的子函数,可以采用递推的方式来计算这个分数序列的前n项之和。该序列的特点是每一项都是前两项的和,可以用如下的 Python 代码实现:
```python
def fun(n):
if n <= 0:
return "输入的数值需要大于0"
# 初始化第一个分数
numerator = 2
denominator = 1
# 用于存储和的变量
seq_sum = numerator / denominator
print(f"{numerator}/{denominator}", end=" -> ")
for i in range(2, n + 1):
# 计算下一个分数
next_numerator = numerator + denominator
next_denominator = i
seq_sum += next_numerator / next_denominator
print(f"{next_numerator}/{next_denominator}", end=", ")
print(f"总和为: {seq_sum}")
```
在这个函数里,我们首先检查输入的值是否合法,然后初始化第一项分数并开始迭代计算后续的分数,每次将当前和加上新生成的分数,直到达到指定的项数n。
相关问题
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
```
编写子函数fun求一分数序列 2/1, 3/2, 5/3, 8/5, 13/8, 21/13…的前n 项之和
以下是求一分数序列前n项之和的Python代码:
```python
def fibonacci(n):
if n == 1:
return 2
elif n == 2:
return 5
else:
return fibonacci(n-1) + fibonacci(n-2)
def fun(n):
if n == 1:
return 2
else:
a = fibonacci(n+1)
b = fibonacci(n)
return a/b + fun(n-1)
print(fun(6)) # 输出:11.0
```
阅读全文