2013-05-10 75 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中的有效操作。)