C程序哪里错了(输出斐波那契数列前n项)

原问题:C程序哪里错了(输出斐波那契数列前n项)
分类:编程开发 > 最后更新时间:【2016-12-12 19:06:21】
问题补充:

#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项算法应该没错,可能开始有点问题
    最佳答案由网友  whoami1978  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    4

    分享到:

    其他回答

    暂无其它回答!

      推荐