所以我建立了這個程序來構建不同的樓梯案例。問題基本上是:給定一個整數N,你可以用多少種不同的方法來建造樓梯。 N保證大於3且小於200.任何先前的步驟不能大於其後續步驟,否則它會破壞樓梯的目的。Java函數的備忘錄
所以給定的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 bricks(height +1, bricksLeft - height) + bricks(height +1, bricksLeft);
}
}
這是迄今爲止,我曾經有一個問題的最佳答案之一了。謝謝你這麼多,不僅給了我一個簡短的入概念,但也將其鏈接到我的問題。 – GreenSkies
@GreenSkies總是樂於給予了詳細回答一個深思熟慮的問題=] – nhouser9