#include <stdio.h>
#include <stdlib.h>
long work(long x)
{
if (x<=3) return (x+1)/2;
else return work(x-1)+work(x-3);
}
int main()
{
long a,p;
printf("請輸入臺階的層數\n");
scanf("%ld",&a);
p=work(a);
printf ("總***有%ld種爬法\n",p);
system("pause");
return 0;
}
原來的聲明
void work(); //聲明爬山執行函數
是錯的。因為在else sum=work(x-1)+work(x-3); 中將它作為函數值來引用呢。