1

だから、これは私の最初の再帰関数です (私は願っています!) そして、なぜそれが機能しないのかわからない (別名赤い線) アイデアはありますか?

int myFactorial(int C) { //underlined, expects ";"

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

    if (C == 1){
        return 1; //underlined, cannot return value from method whose result type is void
    }
    return (C*(myFactorial(n/(r(n-r))))); //underlined
}
4

4 に答える 4

10

ここに: r(n-r).

rは関数ではなく、ローカル変数ですint

ということr * (n - r)ですか?

于 2013-05-11T16:38:52.570 に答える
2

忌避的なステートメントは次のようにすべきではありません。

return ( C * myFactorial ( C - 1 ) );
于 2013-05-11T16:42:44.647 に答える
0

あなたの方程式は再帰を述べていません。機能は再帰で計算できます。

public int MyMethod() {
int n = Integer.parseInt(objectsChooseField.getText());
int r = Integer.parseInt(chooseFromField.getText());
int result = C( n, r );
}

public int C( int n, int r ) {
  int res = faculty( n ) / ( faculty( r ) * ( n - r ));
  return res;
}

//--- Computing the faculty itself could be done by recursion :-)
public int faculty( n ) {
  if ( n > 1 )
    return n * faculty( n - 1 );
  return 1;
}
于 2013-05-11T17:16:35.090 に答える