1.题目
求1+1/2+2/3+3/5+5/8+8/13+13/21……的前n项的和。
要求:用递归完成
输入格式:
第1行:一个整数n(1 <= n <= 30 )。
输出格式:
一行:一个小数,即前n项之和(保留3位小数)。
输入样例:
在这里给出一组输入。例如:
5
输出样例:
在这里给出相应的输出。例如:
3.392
2.代码
解释
使用两次递归函数,其中函数he调用了函数Fibonacci ,he函数用递归求n个数之和,每个数可用[第n-1个Fibonacci数/第n个Fibonacci数]来表示
#include <stdio.h>
int Fibonacci(int n)
{
if(n==1||n==2)
{
return n;
}
else
{
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
double he(int n)
{
if(n==1)
{
return 1;
}
else
{
return Fibonacci(n-1)*1.0/Fibonacci(n)*1.0+he(n-1);
}
}
int main()
{
int n=0;
scanf("%d",&n);
double m=he(n);
printf("%.3lf",m);
return 0;
}