题目:
一共有n列台阶,每次只能走1步或者2步,问有多少种方法可以走到顶部?
问题分析:每次只能走1步或2步,当走1步的时候剩下的台阶数为n-1,当走2步时候剩下的台阶数为n-2,不论是选择了走1步还是走2步下次走的时候还是有两种选择,所以用递归来处理。
代码:
#include <stdio.h>
int compute(int n)
{
if(n<0) //当剩下的步数低于0的时候说明此方法不可行
return 0;
if(n==1) //当剩下1个台阶的时候有一种走法
return 1;
if(n==2) //当剩下2个台阶的时候有两种走法
return 2;
return compute(n-1) + compute(n-2); //每次有两种选择,1或2,选择后又会出现两种选择
}
int main()
{
printf("%d",compute(5));
return 0;
}