#include <stdio.h>
/*未经测试*/
int f(int n)
{
if (n > 2) return f(n - 1) + f(n - 2);
else if (n == 2 || n == 1) return 1;
}
int main()
{
int i;
for (i = 1; i <= 10; i++) printf("a%d = %d\n", i, f(i));
getch();
return 0;
}
[/CODE]
----------------解决方案--------------------------------------------------------
习惯
----------------解决方案--------------------------------------------------------
#include <stdio.h>
int Fibonacci(int n);
int main(void)
{
int n,i;
printf("\nHow many number you want to get:\t");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("%d ",Fibonacci(i));
}
printf("\n");
return 0;
}
int Fibonacci(int n)
{
if(n<=0)
{
return 0;
}
if(n==1||n==2)
{
return 1;
}
else
{
return (Fibonacci(n-1)+Fibonacci(n-2));
}
}
peswe同志的程序很有潜力!程序唯一的原则问题是if分支不太合理。即概率最高的n>2的情况被放到了最后的else分支。应该为:
if(n > 2) return (Fibonacci(n-1)+Fibonacci(n-2));
if(n==1||n==2) return 1;
else return 0;
----------------解决方案--------------------------------------------------------
呵呵,没错,按你的改变是可以减少判断的次数,以提高效率!~
----------------解决方案--------------------------------------------------------