我有一个递归函数问题?

时间:2013-05-10 19:00:27

标签: java function recursion

这是我的第一个递归问题,我不理解它,它也不起作用。有什么想法吗?

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));    
    }

1 个答案:

答案 0 :(得分: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中的有效运算符。)