这个问题还是可以应用递归思想去解决,递归能解决的问题大多是可能性过多、知道退出条件且之间有相互联系。
青蛙跳台阶问题,说的是一个青蛙一次可以跳一个台阶或两个台阶,问我们最终跳到n台阶时共有多少种可能性?
我们先考虑这个问题的结束条件,即最后只剩下1个或2个台阶时,递归可以结束。
那么递归之间的关系呢?
有题目可知,青蛙一次可以跳1台阶或2台阶,则总共有台阶n的可能性 可以由每次-1和-2的可能性函数关系列出,即f(n) = f(n - 1) + f(n -2);
递归关系和结束条件我们理顺后就可以进行书写代码了(注:每次要将不可能事件排除,还有注意事件的特殊情况)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int Frog_Jump(int num) {
if (num <= 0) {
return 0;
} else if (num == 1) {
return 1;
} else if (num == 2) {
return 2;
}
return Frog_Jump(num - 1) + Frog_Jump(num - 2);
}
int main()
{
int num = 0;
printf("请输入青蛙需要跳的台阶数:");
scanf("%d", &num);
printf("%d\n",Frog_Jump(num));
system("pause");
return 0;
}