台阶有关问题

求助台阶问题
#include<stdio.h>

int sum=0;

void fun(int i,int b)//i表示当前台阶数 b表示已经走了几步
{
if(i==40)return;
if(i==39){
if(b%2==0)
sum++;
return;
}
fun(i+1,b+1);
fun(i+2,b+1);
return ;
}
int main()
{
fun(0,0);
printf("%d",sum);

return 0;
}


问题是39级台阶,先迈左脚,一次一步或者两步,最后右脚登顶。
问有多少种走法
结果是这么大么?
C

------解决方案--------------------
把台阶设小一点,看和理论是否一样。还有就是调试一下,看程序执行的顺序就知道是不是想要的结果了。