-
题目描述:
-
编写一个求斐波那契数列的递归函数,输入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
AC1---这一个我开始出现了PE错误,原因是空格的问题,每一个数字后面都有一个空格,于是判断了一下是不是最后一个数字。
我开始还去查了一下公式,才写了AC1,但因为公式也误导了我一下。我想成了当输入0的时候,输出一行,,,,但应该是输入几,就输出几行
#include <stdio.h>
int fibo(int n);
int main(){
int n;
int ret=0;
int i,j;
while(scanf("%d",&n) !=EOF){
if(n==0) return 0;
for(i=0;i<n;i++){
for(j=0;j<=2*i;j++){
ret=fibo(j);
printf("%d",ret);
if(j != 2*i) printf(" ");
}
printf("\n");
}
}
return 0;
}
int fibo(int n){
if(n==0) return 0;
else if(n==1) return 1;
else return fibo(n-1)+fibo(n-2);
}
/**************************************************************
Problem: 1075
User: 人气呆毛选手
Language: C
Result: Accepted
Time:2780 ms
Memory:912 kb
****************************************************************/
AC2--觉得这一种写法更好一些,因为不知道那个函数的公式也可以做出来。而且这样的效率更高。
#include <stdio.h>
void fibo(int n);
int main(){
int n;
while(scanf("%d",&n) !=EOF){
if(n==0) return 0;
fibo(n);
}
return 0;
}
void fibo(int n){
if(n==0) return;
fibo(n-1);
int a=1,b=1;
int temp;
int i;
printf("0");
for(i=1;i<n;++i){
printf(" %d %d",a,b);
temp=a+b;
a=temp;
b=b+a;
}
printf("\n");
}
/**************************************************************
Problem: 1075
User: 人气呆毛选手
Language: C
Result: Accepted
Time:10 ms
Memory:912 kb
****************************************************************/
九度连续爆炸多天