-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 に答える