算法学习-递归-猴子爬山

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]);
        }
    }
}

  

posted @ 2017-08-21 15:01  酸奶加绿茶  阅读(468)  评论(0编辑  收藏  举报