return (f(g - 1) + f(g - 2));这个是怎么计算的呀

long f(int g)
{
switch (g)
{
case 0: return 0;
case 1:
case 2: return 1;
}
return (f(g - 1) + f(g - 2));
}
int main()
{
long k;
k = f(7);
printf("k= %d", k);

return 0;

}

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

就是不满足case时重复调用f函数

先调用f函数传入g-1,获得结果1,再调用f函数传入g-2,获得结果2,相加两个结果,作为调用f函数传入g时的返回值

这个题目有详细源码吗