C程序哪里错了(输出斐波那契数列前n项)
#include<stdio.h>
int a(int n){ int a=1,b=1,t; static int i=3; t=a+b; a=b; b=t; printf("%d\t",t); if(i<=n) { i++; } a(n);}void main(){ int n,a=1,b=1; scanf("%d",&n); if(n=1) printf("%d",a); else if(n=2) printf("%d\t%d",a,b); else printf("%d\t%d",a,b); a(n);}
最佳答案
你的算法完全不对,斐波那契数列前n项简单地可用
#include<stdio.h>
int a(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
return a(n - 1) + a(n - 2);
}
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", a(n));
return 0;
}
来计算,另外 ,你的if (n=1)这种是初学C最容易出的错之一,C的判等于不能用=要用==的
追问:
你这个只能输出低n项
追问:
#include<stdio.h>void aa(int n){ int a=1,b=1,t; static int i=3; for(;i<=n;) { t=a+b; a=b; b=t; if(i<=n){printf("%d\t",t); i++;} } }void main(){int n,a=1,b=1;scanf("%d",&n);if(n==1)printf("%d",a);else if(n==2)printf("%d\t%d",a,b);elseprintf("%d\t%d\t",a,b); aa(n);}我改了一下这样可以输出前n项算法应该没错,可能开始有点问题
其他回答
暂无其它回答!