问题描述
求1/1+1/2+2/3+3/5+5/8+8/13+13/21+21/34…的前 n 项的和。
输入
输入一个整数 n(1<=n<=30)。
输出
输出一个小数,即前 n 项之和(保留 3 位小数)。
样例
输入
复制
20
输出
复制
12.660
#include<bits/stdc++.h>
using namespace std;
int fun1(int n){
if(n==1||n==2) return 1;
else return fun1(n-1)+fun1(n-2);
}
int fun2(int n){
if(n==1) return 1;
if(n==2) return 2;
return fun2(n-1)+fun2(n-2);
}
int main(){
int x;
double sum=0;
cin>>x;
for (int i=1;i<=x;i++){
sum=sum+(fun1(i)*1.0)/(fun2(i)*1.0);
}
cout<<fixed<<setprecision(3)<<sum<<endl;
return 0;
}
//求1/1+1/2+2/3+3/5+5/8+8/13+13/21……的前n项的和