思路:
输出的每一行分为:空格、一个0、斐波那契数列这三个部分。想清楚每一行空格的数量和斐波那契数列的项数即可。
解答:
#include <cstdio>
using namespace std;
int fib_arr[25];
int Fib(int n) {
if(n == 1)
return 1;
else if(n == 2)
return 1;
else
return(Fib(n - 1) + Fib(n - 2));
}
void print(int num) {
for(int i = 0; i <= num - 1; i++) {
// 打印空格
for(int j = 1; j <= 2 * (num - i - 1); j++) {
printf(" ");
}
// 打印一个0
printf("0 ");
// 生成并打印两个斐波那契数
if(i != 0) {
fib_arr[2 * i - 1] = Fib(2 * i - 1);
fib_arr[2 * i] = Fib(2 * i);
for(int j = 1; j <= i * 2; j++) {
printf("%d ", fib_arr[j]);
}
}
printf("\n");
}
}
int main() {
int test_num;
while(scanf("%d", &test_num) != EOF) {
int num;
for(int i = 1; i <= test_num; i++) {
scanf("%d", &num);
print(num);
}
}
return 0;
}