2016-04-27 4 views
-5

このメソッドでは、私は階級だけを使用して階乗を計算することになっています。したがって、たとえば、nに対して7を入力した場合、6 * 4 * 2 = 48と期待します。コードが修正され、動作するようになっています。私は今のように1時間のように試して、私が間違っていることを知らない。ここに私のコードは次のとおりです。Javaの偶数ファクトリメソッド。私はすべてを試しましたが、それを理解することはできません

int p07EvenFactorial(int n) { 
    if (n % 2 == 1) { 
     n--; 
    } 
    int fact = 1; 
    for (int i = n; i > 0; i--) { 
     fact = fact + 2 * i; 
    } 
    return fact; 
} 
+2

あなたが偶数のみを使用したい場合は、その後、 '減らすために意味がありません私は2つで1つではなく、 'fact * = i;'を使います。 – Tom

+0

コードではない場合はどうすれば書けますか?最初に英語で問題を考え、パターン(ループ)を見つけてからコードに変換します。 – Krease

+0

ところで、Wikipediaによれば、それは[二重階乗](https://en.wikipedia.org/wiki/Double_factorial)と呼ばれています。 – Pang

答えて

0

方法について

int p07EvenFactorial(int n) { 
    if (n % 2 == 1) { 
     n--; 
    } 
    int fact = 1; 
    for (int i = 2; i <= n; i = i + 2) { 
     fact = fact * i; 
    } 
    return fact; 
} 
+0

ああ、それは非常に意味をなさせる!ありがとうございました :) – LearningToCodePlzHelp

0

これはどう

public int fact(int n) { 
     if(n % 2 ==1){ 
      n = n -1; 
     } 
     if(n == 0){ 
      return 1; 
     } else { 
      return n*fact(n-2); 
     } 
} 
関連する問題