有一分数数列:2/1,3/2,5/3,8/5...求出这个数列的前n项和,1<=n<=40,保留小数点后10位。C语言的代码>
时间: 2024-01-21 11:02:26 浏览: 15
以下是使用double类型计算的代码:
```c
#include<stdio.h>
int main()
{
int n;
double a = 2, b = 1, sum = 0, t;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
sum += a / b;
t = b;
b = a;
a = a + t;
}
printf("%.10lf", sum);
return 0;
}
```
代码思路:使用两个变量a和b分别存储每一项的分子和分母,利用循环计算前n项的和并输出。每一项的分子是前一项的分子加上前一项的分母,分母是前一项的分子。
相关问题
有一分数 序列:2/1,3/2, 5/3, 8/5, 13/8 21/13..求出这个数列的前n项之和
这个数列其实就是斐波那契数列的每一项的分数形式,即第n项为F(n+1)/F(n),其中F(n)表示第n个斐波那契数。
因此,这个数列的前n项之和可以表示为:
F(3)/F(2) + F(4)/F(3) + ... + F(n+1)/F(n)
根据斐波那契数列的递推公式F(n) = F(n-1) + F(n-2),可以得到F(n+1)/F(n) = 1 + F(n-1)/F(n),因此,上式可以化简为:
1 + F(2)/F(1) + F(3)/F(2) + ... + F(n)/F(n-1)
再次利用斐波那契数列的递推公式,可以得到F(n)/F(n-1) = (1 + sqrt(5))/2,因此,上式又可以化简为:
1 + (1 + sqrt(5))/2 + (1 + sqrt(5))^2/2^3 + ... + (1 + sqrt(5))^(n-1)/2^(n-1)
最后,利用等比数列求和公式,可以得到这个数列的前n项之和为:
(1/(sqrt(5)*2^(n-1))) * ((1+sqrt(5))^n - (1-sqrt(5))^n) - 1
注意,这个公式中的^表示乘方,而不是异或运算符。
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20
这个数列是斐波那契数列的一个变形,可以使用循环来实现。具体实现代码如下:
```
double a = 2, b = 1, c;
for (int i = 1; i <= 20; i++)
{
Console.WriteLine("{0}/{1}", a, b);
c = a + b;
b = a;
a = c;
}
```
在这段代码中,我们使用了三个变量a、b、c来存储数列中的三个数,其中a和b分别表示当前数列中的分子和分母,c用于计算下一个分子。在循环中,我们先输出当前的分数,然后计算下一个分子和分母的值,最后将b赋值给a,将c赋值给b,继续循环输出下一个分数。