问题描述
有n级楼梯,有2种爬法,1次1级/2级。n级楼梯有多少种爬法?
解决思路
n=1,1种爬法
n=2,2种爬法
n=3,第一次爬1级,有2种爬法
第一次爬2级,有1种爬法,共3种爬法
第n次爬楼梯:f(n) = f(n-1) + f(n+1)
代码实现
#include <stdio.h>
int func(int N)
{
if( N == 1 )
return 1;
if( N == 2 )
return 2;
if( N > 2 )
return func(N-1) + func(N-2);
}
int main(int argc, const char** argv)
{
int Stairs = 0;
scanf( "%d", &Stairs );
printf( "There are %d ways to climb", func(Stairs) );
return 0;
}