1.问题引入:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
2.逆向思维:
设跳到n上有P(n)种可能
青蛙最后一步前在第n-1或第n-2个台阶上,有两种可能
即,P(n) = P(n-1) + P(n-2)
.........
跳到第一个台阶上有1种可能 即P(1)= 1
跳到第二个台阶上有2种可能 即P(2)= 2
(约定n>0)
3.编写代码:
#include <stdio.h>
int jumpp(int n)
{
if(n>1)
{
return jumpp(n-1) + jumpp(n-2);
}
else
{
return 1;
}
}
4.总结:
青蛙跳台问题用递归方法解决较为清晰明了,此外还可类比于斐波那契数列问题来解决。