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

1 回答 1

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 中的有效运算符。)

于 2013-05-10T19:12:07.530 回答