原题链接:C语言训练-斐波纳契数列
解题思路:找到逻辑关系,fib[i]=fib[i-1]+fib[i-2]
注意事项:数组下标需要注意,还要声明出fib[0].fib[1].因为我们是根据fib[i]=fib[i-1]+fib[i-2]得来的。
参考代码:
#include
using namespace std;
int main()
{
int fib[100];//开个100个空间,足够了
fib[0]=1;
fib[1]=1;
fib[2]=fib[0]+fib[1];
int N;
cin>>N;
if(N==1)
{
cout<<fib[0]<<" ";//N=1的情况
}
else if(N==1&&N==2)
{
cout<<fib[0]<<" "<<fib[1]<<" ";//N=2的情况
}
else
cout<<fib[0]<<" "<<fib[1]<<" ";
for(int i=2;i<N;i++)
{
fib[i]=fib[i-1]+fib[i-2];//N>2的情况
cout<<fib[i]<<" ";
}
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
程序如下 #include<bits/stdc++.h> using namespace std; int f(int x) { if (x == 1 || x == 2) { return 1; } else return f(x - 1) + f(x - 2); } int main() { int f(int); int N; cin >> N; for (int i = 1; i <= N; i++) cout << f(i) << " "; return 0; }