解释出这段代码?

Explain out of this code?

我是编程新手。我找不到输出的原因 0 1 1 2 3 5 8 13 21 34 55

不应该是0 1 1 3 5 7等等吗?

第一,i=0 所以打印 0 (because return 0),第二 i=1 所以打印 1 (because return 1),第三 i=2 所以打印 1 because (2-1)+(2-2)=1,第四 i=3 所以打印 3 because (3-1)+(3-2)=3 等..

请原谅我提出这个非常基本的问题。也许编程不适合我

#include <stdio.h>
    #include <stdlib.h>
    #define MAX 10

    int i=12345;
    double y=1.23456;

    void display_variables()
    {
      double y=4.352;
      printf("i=%d, y=%f\n", i,y);
    }

    int main()
    {
        printf("i=%d, y=%f\n", i,y);
        display_variables();
        int c,i=0;  
        for (c = 0; c <= MAX; c++)
            {
                printf("%d\n", fib(i));
            i++;
            }
        return 0;
        } 

    int fib(int n)
    {
       if ( n == 0 )
          return 0;
       else if ( n == 1 )
          return 1;
       else
          return ( fib(n-1) + fib(n-2) );
    } 

看来,

fib(0) = 0,
fib(1) = 1,
fib(2) = fib(1) + fib(0)  = 1,
fib(3) = fib(2) + fib(1)
       = fib(1) + fib(0) + fib(1)
       = 1 + 0 + 1
       = 2
etc...

人都会犯错,尤其是新手,要有耐心,你会发现兴趣的