2013-05-10 74 views
-4

這是我的第一個遞歸問題,我不理解它,也不工作。有任何想法嗎?我有遞歸函數問題?

int C; 
     int myFactorial; 

     int n = Integer.parseInt(objectsChooseField.getText()); 
     int r = Integer.parseInt(chooseFromField.getText()); 

     if (C == 1){ 
      return 1; 
     } 
     return (C*(myFactionial(n!/(r!(n-r))))); 
     //C(n,r) = n!/(r!(n-r));  
    } 
+3

沒有遞歸在這裏。一些代碼丟失 – BlackBear 2013-05-10 19:01:34

+0

遞歸的確切位置? – Maroun 2013-05-10 19:01:37

+2

你的代碼有很多語法錯誤,並且這裏沒有遞歸。如果您修復了語法錯誤並提供了實際的遞歸代碼,我們可能會幫助您,但在目前的形式中,我們無法爲您提供幫助。 – templatetypedef 2013-05-10 19:02:16

回答

0

我想你的意思是也許

int myFactorial(int C) { 

    int n = Integer.parseInt(objectsChooseField.getText()); 
    int r = Integer.parseInt(chooseFromField.getText()); 

    if (C == 1){ 
     return 1; 
    } 
    return (C*(myFactorial(n!/(r!(n-r))))); 
    //C(n,r) = n!/(r!(n-r));  
} 

這是遞歸的 - 該myFactorial方法調用自身。對有效的遞歸實現來說關鍵是檢查一些終止條件(在你的情況下爲if (C == 1)),這樣你就不會得到「無限」的遞歸和一個令人討厭的崩潰消息。

(但請注意,這個特殊的實現是不可能的工作,因爲你正在做的整數運算,並因爲!/不是Java中的有效操作。)