算法学习-递归-猴子爬山
1.需求描述
一个猴子沿着一座山的n级台阶向上爬,猴子上山一步可跳1级或3级,试求上山的n级台阶有多少种不同的爬法。
2.实现思路
f(1)=1
f(2)=1
f(3)=2
f(4)=f(3)+f(1)
f(n)=f(n-1)+f(n-3) ( n>3 )到第n个台阶,只有两种办法,n-1 跳1级别,或者n-3跳3级别
3.代码实现
package com.eric; import java.util.Scanner; /** * 一个猴子沿着一座山的n级台阶向上爬,猴子上山一步可跳1级或3级,试求上山的n级台阶有多少种不同的爬法。 * 屏幕输入n,返回f(n) */ public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); while (in.hasNextInt()){ int a = in.nextInt(); int[] ints=new int[1000]; ints[1]=1; ints[2]=1; ints[3]=2; for (int i=4;i<=a;i++){ ints[i]=ints[i-1]+ints[i-3]; } System.out.println(ints[a]); } } }
We only live once, and time just goes by.