2016-06-18 2 views
-1

결과 배열이 {(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 곱셈은 위에 설명 된 방법이며, 그것은 스스로를 호출하는 것이므로 반복적으로 만듭니다. 귀하의 모범은 충분한 정보가 없습니다. 첫 번째 요소는 2 * 3 * 6을 의미하는 대부분의 수학 표기법에 대해'(2 * 3) 6'입니까? 그렇지 않다면 모든 요소가 조합입니까? 그들은 명령에 있어야합니까? – matt

+0

'multiply는 위에서 설명한 방법입니다 .' 그러면 선언이'multipl()'을 읽는 이유는 무엇입니까? '당신의 예제는 충분한 정보를 가지고 있지 않다. '잘 관찰되었지만 예를 들어 [user1547535] (http://stackoverflow.com/users/1547535/user1547535)는 나의 것보다. (그 관측은 대답이 아닌 질문에 대한 의견을 요구할 수 있습니다. 만약 저라면, 제 1 지수가 제 2 지수보다 작은 모든 쌍의 the_products를 사전 식으로 요청했습니다.) – 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

(질문을 묻는 데 어려움을 겪는 동안 :)이 게시물의 답변은 무엇이며 '결과 배열'은 무엇입니까? (주석은 // 관련되지 않은 이름을 사용합니다.) – greybeard

+0

결과 배열은 [6,10,15]입니다. – user1547535