Java版爬楼梯递归版最佳优化

来源:互联网 发布:腾讯视频mac版 下载 编辑:程序博客网 时间:2024/06/06 02:29

假设你现在正在爬楼梯,楼梯有 nn 级。每次你只能爬 11 级或者 22 级,那么你有多少种方法爬到楼梯的顶部?

输入格式

第一行输入一个整数 n(1≤n≤50)n(1n50),代表楼梯的级数。

输出格式

输出爬到楼梯顶部的方法总数。

样例输入

5

样例输出

8

关键在于保存每次的计算状态,减少重复计算
import java.util.*;class Main{ static int a[];public static int f(int k){if(k==1||k==0){return 1;}if(k>1){if(a[k-2]==0){a[k-2]=f(k-2);return f(k-1)+f(k-2);}return f(k-1)+a[k-2];}return 0;}public static void main(String[] args) {Scanner input =new Scanner(System.in);int q=input.nextInt();a=new int[q];System.out.print(f(q));}}


原创粉丝点击