初学者不会分析这段代码,求帮助

题目是这样的,课堂上老师已经带我们打出,但我不会分析这段代码图片说明
代码是这样的,帮忙分析下
nt fibo(int n);
int main()
{
int i=0,fi,j=0;
for(i=0;i<30;i++)
{
fi=fibo(i+1);
printf("%d\t",fi);
j++;
if(j%5==0)
printf("\n");

}
return 0;

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

int fibo(int n); //声明fibo函数
int main() //实现主函数
{
int i=0,fi,j=0; //定义循环变量
for(i=0;i<30;i++) //循环30次,获取fibo数的前30项
{
fi=fibo(i+1); //获取每项的fibo数
printf("%d\t",fi); //输出获取的fibo数
j++; //行控制个数叠加
if(j%5==0) //当此行输入5项fibo时
printf("\n"); //进行换行
}
return 0; //执行结束
}
int fibo(int n) //fibo函数定义
{
int s=0; //定义变量
if(n==1||n==2) //当当前fibo项为第一项或第二项时
s=1; //返回1
else
s=fibo(n-1)+fibo(n-2); //当当前fibo项为非第一项或第二项时,递归获取当前项
return s; //返回当前项
}

如果什么都不懂,请先上补习班或请家教。
具体哪个语句有问题了再来提问。

这部很简单么。fibo就是题目中的地递归方法,1或2就返回1,否则就找前两个加起来,直到递归结束。
main方法就更简单了,只是一个循环打印前三十项,每五项在一行。

把代码敲个几十遍,就会了