猴子爬山
原创
©著作权归作者所有:来自51CTO博客作者放下也不自在的原创作品,请联系作者获取转载授权,否则将追究法律责任
* 猴子爬山问题:一个猴子在一座有台阶的山上爬山跳跃,猴子上山一步可跳1级或跳3级,试求猴子上山有多少种不同的跳法(假设台阶不超过50阶)
* 注:一般台阶数不允许太高,因为有可能超过固定类型数字的表示范围
public class ClimbMountains {
public static void main(String[] args) {
// 初始化数组,+4防止下标越界,使用long类型可以使台阶数稍微高一些
long[] arr = new long[top + 4];
long ways = process(0, top, arr);
System.out.println(ways);
* @param arr 当前最高top阶的情况下,在step阶的不同跳法总数
private static long process(int step, int top, long[] arr) {
arr[up1] = process(up1, top, arr);
arr[up3] = process(up3, top, arr);
return arr[up1] + arr[up3];