#include <iostream>
#include <stdlib.h>
using namespace std;
long fi[10000];
long getFi(int n){// n>1
if(n==0||n==1)return fi[n];
if(fi[n]!=0)return fi[n];
else
return getFi(n-2)+getFi(n-1);
}
void func()
{
fi[0]=0;
fi[1]=1;
int n;
while(cin>>n)
{
for(int i=0;i<n;i++)
{
bool flag=false;//first
for(int j=0;j<2*i+1;j++)
{
if(flag==false){
cout<<getFi(j);
flag=true;
}else
cout<<" "<<getFi(j);
}
cout<<endl;
}
}
}
int main(int argc, char *argv[])
{
//printf("Hello, world\n");
func();
return 0;
}
这样递归性能其实很差,可以考虑用预记录的方式,或者用矩阵计算
-
题目描述:
-
编写一个求斐波那契数列的递归函数,输入n值,使用该递归函数,输出如样例输出的斐波那契数列。
-
输入:
-
一个整型数n
-
输出:
-
题目可能有多组不同的测试数据,对于每组输入数据,
按题目的要求输出相应的斐波那契图形。
-
样例输入:
-
6
-
样例输出:
-
0 0 1 1 0 1 1 2 3 0 1 1 2 3 5 8 0 1 1 2 3 5 8 13 21 0 1 1 2 3 5 8 13 21 34 55