九度oj-1075-斐波那契数列

来源:互联网 发布:php集成包 编辑:程序博客网 时间:2024/06/05 11:41
题目描述:

编写一个求斐波那契数列的递归函数,输入n值,使用该递归函数,输出如样例输出的斐波那契数列。

输入:

一个整型数n

输出:

题目可能有多组不同的测试数据,对于每组输入数据,
按题目的要求输出相应的斐波那契图形。

样例输入:
6
样例输出:
00 1 10 1 1 2 30 1 1 2 3 5 80 1 1 2 3 5 8 13 210 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****************************************************************/

九度连续爆炸多天





原创粉丝点击