用c语言怎么写这个程序,分数序列2/1,3/2,5/3,8/5…,求出这个数列的前20项之和?
发布网友
发布时间:2022-05-26 14:57
我来回答
共5个回答
热心网友
时间:2023-10-23 01:57
此数列从第二项起,后一项的分子是前一项分子分母之和,分母是前一项分子。利用这一规律自定义一个递归函数求和。求和时将分子强制为double型以获得浮点商。代码如下:
#include "stdio.h"
double myfun(int m,int d,int n){//自定义前n项求和函数
if(n>1)//若n>1则递归调用
return (double)m/d+myfun(m+d,m,n-1);
return (double)m/d;//n==20时返回第20项m/d的浮点值
}
int main(int argc,char *argv[]){
printf("%f\n",myfun(2,1,20));//用第一项分子分母为2/1调用
return 0;
}
运行结果如下图:
热心网友
时间:2023-10-23 01:58
#include<stdio.h>
int main()
{
float a,b,c;
int i;
a=2.0;
b=1.0;
c=a/b;
for(i=2;i<=20;i++)
{
a=a+b;
b=a-b;
c=c+a/b;
}
printf("%.1f ",c);
}
热心网友
时间:2023-10-23 01:58
#include <stdio.h>
int main()
{
float a=1,b=1,i,t;
float n=0;
for(i=0;i<20;i++)
{
t=b;
b+=a;
a=t;
n+=(b/a);
}
printf("%f",n);
getch();
return 0;
}
热心网友
时间:2023-10-23 01:59
int i=2,j=1,t,s; for (int k=0;k<20;k++) { s+=i/j; i=t; i+=j; j=t; } 输出s
热心网友
时间:2023-10-23 01:59
python 写的
//形如:fzi/fmu
fzi = 2
fmu = 1
lis = [ ]
for i in range(20):
sum = fzi + fmu
lis.append(fzi/fmu) //加入lis中
temp = fzi //以下三句交换分子分母
fzi = sum
fmu = temp
然后>>>
>>>lis
[2.0, 1.5, 1.6666666666666667, 1.6, 1.625, 1.6153846153846154, 1.619047619047619, 1.6176470588235294, 1.6181818181818182, 1.6179775280898876, 1.6180555555555556, 1.6180257510729614, 1.6180371352785146, 1.618032786885246, 1.618034447821682, 1.6180338134001253, 1.618034055727554, 1.6180339631667064, 1.6180339985218033, 1.618033985017358]
>>> len(lis)
20
>>> sum=0
>>> for i in len(lis):
print(lis[i])
>>> for i in range(len(lis)):
sum += lis[i]
print(sum)
2.0
3.5
5.166666666666667
6.7666666666666675
8.391666666666667
10.007051282051282
11.626098901098901
13.24374595992243
14.86192777810425
16.479905306194137
18.097960861749694
19.715986612822654
21.334023748101167
22.95205653498641
24.570090982808093
26.188124796208218
27.806158851935773
29.42419281510248
31.042226813624282
32.66026079864164
>>> sum
32.66026079864164