求小于输入数的所有斐波那契数C语言

问题遇到的现象和发生背景 :求小于输入数的所有斐波那契数 C语言
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法 :for、while循环
我想要达到的结果: 输出小于输入数的所有斐波那契数C语言

#include<stdio.h>
long int fun(int n)
{
    if(n==0)
       return 0;
    else 
       if(n==1)
          return 1;
       else
          return fun(n-1)+fun(n-2);
}
int main()
{
    int n,i=0;
    scanf("%d",&n);
    while(1)
    {
      if(fun(i)<n)
         printf("%ld ",fun(i));
      else
         break;
      i++;
    }
    return 0;
}