小编Gre*_*ies的帖子

如何记住递归 Java 方法?

所以我构建了这个程序来构建不同的楼梯案例。本质上的问题是:给定一个整数 N,你可以用多少种不同的方式来建造楼梯。N 保证大于 3 且小于 200。任何前一步都不能大于其后一步,否则就违背了楼梯的目的。

所以给定 N = 3 你可以建造一个楼梯:2 步,然后 1 步

给定 N = 4 你可以建造一个楼梯:3 步,然后 1 步

给定 N = 5 你可以建造两个楼梯:3 步然后 2 步或 4 步然后 1 步。

我的方法在下面并且它有效,只是它的运行时间太慢了。所以我正在考虑尝试为该方法做一个备忘录,但说实话,我并不完全了解如何实现这一点。如果我能得到一些关于如何做到这一点的帮助,那就太好了。

public static void main(String [] args)
{
    System.out.println(answer(200));
}
public static int answer(int n) { 
    return bricks(1,n) -1;
}
public static int bricks(int height, int bricksLeft)
{
    if(bricksLeft == 0)
    {
        return 1;
    }
    else if(bricksLeft < height)
    {
        return 0;
    }
    else
    {
        return …
Run Code Online (Sandbox Code Playgroud)

java recursion memoization dynamic-programming

5
推荐指数
1
解决办法
605
查看次数