所以我构建了这个程序来构建不同的楼梯案例。本质上的问题是:给定一个整数 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)