青蛙跳台阶问题就是有n个台阶,小青蛙一次只能跳1个台阶或两个台阶,问它要跳到台阶最上方,有多少跳法,要用递归的方法解决这个问题,首先要清楚它可以用递归的点在哪里。
先从1阶台阶思考,显然只有1种跳法,而2阶台阶则有2种跳法。从3阶台阶开始就是解决问题的关键了,三阶台阶无法一次跳完,那么第一次必然跳1阶或者2阶。如果第一次跳1阶,剩下的跳法就变成了跳2阶的跳法;第一次跳两阶,剩下就是跳1阶的跳法。以此类推跳n阶就是第n-1次的跳法加n-2次的跳法,这就是我们可以使用递归的关键点了,我们可以写出函数:
int Jump(int n)
{
if (n == 1)
return 1;
else if (n == 2)
return 2;
else if(n>2)
return Jump(n - 1) + Jump(n - 2);
}
int main()
{
int n = 0;
printf("总共有几阶台阶?");
scanf("%d", &n);
printf("总共有%d种跳法", Jump(n));
return 0;
}