2016-06-18 11 views
-1

配列a [] = {2,3,5}の結果配列は{(2 * 3)6、(2 * 5)10、(3 * 5)15} 。 ループは使用できません。これは再帰を使用して解決できますが、解決できません。ループを使用せずに配列要素を掛ける

+0

ループは、機械的に、それはあなたがあまり良くないのことを、再帰に変換することができます。.. – harold

+0

それは生産性に関するものではありません@harold。これは問題解決に関するものです。 – user1547535

答えて

0

アレイを再帰的に乗算する。

void multiply(double[] a, double[] b, index){ 
    if(index==a.length){ 
     return; 
    } 
    a[index] = a[index]*b[index]; 
    multiply(a, b, index+1); 
} 
+0

質問の例を処理したかったら、 'multipl(a、b、index)'にどのパラメータを渡すのですか?結果は何でしょうか? 'multiply()'とは何ですか? – greybeard

+0

@greybeard multiplyは上記のメソッドであり、それ自身を呼び出しているため、再帰的になります。あなたの例には十分な情報がありません。最初の要素は、2 * 3 * 6を意味するほとんどの数学的記法の '(2 * 3)6'ですか?そうではないとしましょう、すべての組み合わせの要素ですか?彼らは順調でなければならないのか? – matt

+0

'multiplyは上で説明したメソッドです'の場合、なぜ宣言は 'multipl()'を読みますか?あなたの例には十分な情報がありませんが、例では私のものではなく[user1547535](http://stackoverflow.com/users/1547535/user1547535)です。 (それは、答えではなく、質問に対するコメントを求めているかもしれません。もし私だったら、第1インデックスが辞書順で第2より小さいすべてのペアの製品を求めます。) – greybeard

0
int multiply1(int n, int left, int right) 
{ 

    if(left==(n-1)) 
     return 1; 

    //System.out.print(arr[left]+" "); 
    //System.out.print(arr[right]+" "); 
    System.out.println(arr[left]*arr[right]); 
    right++; 
    if(right==n) 
    { 
     left++; 
     right=left+1; 
    } 
    multiply1(n, left, right); 
    //arr1[start]=arr[ind]*arr[next]; 
    //multiply1(start+1, ind, next+1); 
    return 0; 
} 
+0

(私は質問が何を尋ねるのか分かりにくいですが:)これは何を答えますか、結果の配列は何ですか? (コメントは '// arr1 [start] = arr [ind] * arr [next];'は無関係な名前を使用します) – greybeard

+0

結果の配列は[6,10,15] – user1547535

関連する問題