2015-11-11 41 views
2

我想編寫一些代碼,用於打印您可以使用一步,兩次一步爬樓梯的方式總數,或者一次打印三步時間。打印您可以通過遞歸爬樓梯的總數

我的代碼是

public static int math(int n){ 


     if (n==0){ 
      return 0; 

     } 
     else if (n==1){ 
     return 1; 

     }  
     else return math(n-1)+math(n-2); 
    } 

,但我的代碼,它並沒有給我正確的輸出。 還有別的辦法嗎?

+0

該代碼如何一次考慮3個步驟? –

+0

是不是隻是一個斐波那契算法 – redFIVE

+0

@redFIVE什麼是斐波那契算法 – user4746449

回答

1

這裏的問題是你的基本情況沒有意義。如果還剩下0個步驟,則只有一種方法可以爬升。你的基本情況說,如果有0種方法有0種方法爬。

另外,在這種情況下,您不需要else語句來調用遞歸大小寫。如果返回語句沒有在頂部被調用,該方法應該到達那裏。

int climb(int a){  
    if(a <= 2)   
     return a;  
    return climb(a-1)+climb(a-2); 
} 

這是一次兩個步驟的代碼。您可以計算出時間碼的3個步驟...

+0

我試用了你的代碼,但是當輸入3輸出3但是正確答案4! – user4746449

+0

,因爲你一次只需要1或2步。從未有3個步驟。給出3個步驟,你可以將它們作爲'1-1-1'(一次一步)或'2-1'或'1-2'(2步然後1步,反之亦然),這三種可能的方式走樓梯。現在,嘗試修改解決方案,一次添加3步。 –

+0

是的,我的解決方案一次僅佔1或2個步驟。 –