题目描述
以下数列 0 1 1 2 3 5 8 13 21 ...
被称为斐波纳契数列。
这个数列从第 33 项开始,每一项都等于前两项之和。
输入一个整数 N,请你输出这个序列的前 N 项。
输入格式
一个整数 N。
输出格式
在一行中输出斐波那契数列的前 N 项,数字之间用空格隔开。
数据范围
0<N<46
输入样例:
5
输出样例:
0 1 1 2 3
for循环做法
#include<iostream>
using namespace std;
int main()
{
int n; cin >> n;
if(n == 1) cout << 0;
else if(n == 2) cout << 0 << " " << 1;
else{
cout << 0 << " " << 1 << " ";
int a[50];
for(int i = 2;i < n;i++){
a[0] = 0;
a[1] = 1;
a[i] = a[i-1] + a[i-2];
cout << a[i];
if(i<n) cout << " ";
}
}
}
递归做法
#include<iostream>
using namespace std;
int fib(int n)
{
if(n == 1) return 0;
else if(n == 2) return 1;
else{
return fib(n-1) + fib(n-2);
}
}
int main()
{
int n; cin >> n;
for(int i = 1;i <= n;i++){
cout << fib(i);
if(i<n) cout << " ";
}
}