以下是引用无果分在2013-11-1 13:06:10的发言:
//(前一项分子+前两项的分子)/(前一项分母+前两项的分母)
#include<stdio.h>
int fun(int n)
{
int a;
if(n==0) return 0;
if(n==1) return 2/1;
if(n==2) return 2/1+3/2;
else return (fun(n-2)+fun(n-1))/(fun(n-2)+fun(n-1))0; //这里的0是什么意思?
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",fun(n));
}
return 0;
}
错误如题,是哪错了
你的理解是对的,就是可以找出规律,知道第N个分数的分子和分母分别是前两个的分子和分母之和,不过你的算法错了,既然fun()是一个求和函数,那
else return (fun(n-2)+fun(n-1))/(fun(n-2)+fun(n-1))
这句代码就不是求第N个分数,所以要改
int fun(){
if(n==1) return 2;
else if(n==2) return 3;
else return fun(n-2)+fun(n-1);
}
int
dom(){
if(n==1) return 1;
else if (n==2) return 2;
else return dom(n-2)+dom(n-1);
}
double sum(int n){
double sum = 0.00;
return sum+=fun(n)/dom(n);
}
不过貌似我的过于死板,还是7楼的代码给力,可以看看7楼的
[
本帖最后由 wkz2012 于 2013-11-1 15:32 编辑 ]