Calculating Fibonacci Numbers Recursively in C

后端 未结 6 1231
名媛妹妹
名媛妹妹 2021-01-14 01:52

I\'m trying to learn C by writing a simple program to output Fibonacci numbers. It isn\'t working.

fibonacci.h

unsigned int fibonacc         


        
6条回答
  •  北荒
    北荒 (楼主)
    2021-01-14 02:50

    Well, I preface that recursive function is not an efficient method to calculate Fibonacci and it may be used for dev training/demonstrations purposes only, because every recursion is stored in stack, and it may also overflow for large fibonacci numbers. It is rather worth the effort to write down a more efficient Fibonacci function that uses a loop, like following code:

    #include 
    
    #define MAX_ITERS 20
    
    
    int fibonacci(int);
    
    int main(int argc, char *argv[])
    {
        unsigned int iters;
    
        if(argc>1) {
            iters=atoi(argv[1]);
        } else
            iters=MAX_ITERS;
    
        fibonacci(iters);
    
        return 0;
    }
    
    int fibonacci(int iterations)
    {
       unsigned register int i;
       double first=0.0, second = 1.0, lastsum;
       printf("First %d iterations of Fibonacci series are :\n",iterations);
    
       for ( i = 0 ; i < iterations ; i++ )
       {
          if ( i <= 1 )
             lastsum = (double)i;
          else
          {
             lastsum = first + second;
             first = second;
             second = lastsum;
          }
          printf("%.0f\n",lastsum);
       }
    
    }
    

    Try to compare by your own, running ./fibonacci 50 with this method, for instance on a low cost processor (eg. on a Raspberry PI), and the one with the recursive functions and 50 first numbers as well, and see the difference! ,-)

提交回复
热议问题