0
public class test {

    public static void main (String[] args) {
        System.out.print (prod (1, 2));
    }
    public static int prod (int m, int n){
        if (m == 0) {
            return n+1;
        } else if(m>0 && n == 0){
            return prod (m-1, 1);
        } else if(m>0 && n >0){
            return prod(m-1,prod(m,n-1));
        }
    }
}

何か問題があります:

public static int prod (int m, int n){

しかし、私はそれが何であるかを理解できません。

4

5 に答える 5

2

メソッドは、すべての場合に値を返す必要があります。ステートメントブロックのreturn外側にステートメントを追加できますif

public static int prod (int m, int n) {
   if (m == 0) {
     return n+1;
   } else if(m>0 && n == 0) {
     return prod (m-1, 1);
   } else if(m>0 && n >0) {
     return prod(m-1,prod(m,n-1));
   }

   return n;
}
于 2013-05-12T01:01:55.353 に答える
2

if/else チェーンの最後に else ステートメントはありません。m が -1 の場合はどうなりますか? 決して起こらないことは多くの人が知っていますが、コンパイラーはそうではありません。

于 2013-05-12T01:02:08.173 に答える
0

@Reimeusのソリューションを短くするだけです:(上記の私のコメントを説明しています)

if (m == 0) 
    return n + 1;
if (m > 0 && n == 0) 
    return prod(m - 1, 1);
if (m > 0 && n > 0) 
    return prod(m - 1, prod(m, n - 1));
return n;

この場合、中括弧と冗長で役に立たないelseキーワードは必要ありません。

于 2013-05-12T01:11:04.527 に答える