问题 B: 数列
时间限制: 1 Sec 内存限制: 32 MB
题目描述
编写一个求斐波那契数列的递归函数,输入n 值,使用该递归函数,输出如下图形(参见样例)。
输入
输入第一行为样例数m,接下来有m行每行一个整数n,n不超过10。
输出
对应每个样例输出要求的图形(参见样例格式)。
样例输入
1
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
经验总结
分析图形中的数字变化规律和循环变量的关系, 可以用实际数据高效地解决。
AC代码
#include <cstdio>
int Fib(int a)
{
if(a == 0 || a == 1)
return 1;
else
return Fib(a - 1) + Fib(a - 2);
}
int main()
{
int n, m;
while(scanf("%d", &n) != EOF)
{
for(int i = 0; i < n; i++)
{
scanf("%d", &m);
for(int j = 0; j < m; j++)
{
for(int k = 0; k < (m - 1 - j) * 2; k++)
printf(" ");
if(j != 0)
printf("0 ");
else
printf("0");
if(j != 0)
{
for(int k = 0; k <= 2 * j - 1; k++)
{
printf("%d", Fib(k));
if(k != 2 * j - 1)
printf(" ");
}
}
printf("\n");
}
}
}
return 0;
}