我这个代码哪里错了啊

#include

int fibonacci(int i)
{
if (i == -1)
return 0;
if (i == 1)
return 1;
return fibonacci(i - 1) + fibonacci(i - 2);
}

int main(int argc, char** argv)
{
int i = 0;
int n = 0;

printf("请输入你要打印的长度:");
scanf("%d", &n);

for (i = 0; i < n; i++)
    printf("%d ", fibonacci(i));

return 0;

}
哪里错了啊

当i=2的时候不成立。即n=3时。

使用递归解斐波那契数列题目要初始化两个基线条件,即i = 1时 return 1,i = 2时return 2
或者i = 0时 return 1,i = 1时return 2

在执行fibonacci(0)时就发生错误了。
i=0时会执行 return fibonacci(i - 1) + fibonacci(i - 2);这行代码,然后是一直递归调用,无法跳出来

修改如下,供参考:

#include <stdio.h>
int fibonacci(int i)
{
    //if (i == -1)       //修改
    //   return 0;       //修改
    if (i == 1 || i == 0)//修改
       return 1;
    return fibonacci(i - 1) + fibonacci(i - 2);
}

int main(int argc, char** argv)
{
    int i = 0;
    int n = 0;

    printf("请输入你要打印的长度:");
    scanf("%d", &n);

    for (i = 0; i < n; i++)
         printf("%d ", fibonacci(i));
    return 0;
}