결과 배열이 {(2 * 3) 6, (2 * 5) 10, (3 * 5) 15} . 루프를 사용할 수 없습니다. 이것은 재귀를 사용하여 해결할 수 있지만 해결할 수는 없습니다.루프를 사용하지 않고 배열 요소 곱하기
답변
배열을 재귀 적으로 곱하십시오.
void multiply(double[] a, double[] b, index){
if(index==a.length){
return;
}
a[index] = a[index]*b[index];
multiply(a, b, index+1);
}
질문의 예제가 처리되기를 원하면'multipl (a, b, index)'에 어떤 매개 변수를 제공해야합니까? 그 결과는 무엇입니까? 'multiply()'란 무엇입니까? – greybeard
@greybeard 곱셈은 위에 설명 된 방법이며, 그것은 스스로를 호출하는 것이므로 반복적으로 만듭니다. 귀하의 모범은 충분한 정보가 없습니다. 첫 번째 요소는 2 * 3 * 6을 의미하는 대부분의 수학 표기법에 대해'(2 * 3) 6'입니까? 그렇지 않다면 모든 요소가 조합입니까? 그들은 명령에 있어야합니까? – matt
'multiply는 위에서 설명한 방법입니다 .' 그러면 선언이'multipl()'을 읽는 이유는 무엇입니까? '당신의 예제는 충분한 정보를 가지고 있지 않다. '잘 관찰되었지만 예를 들어 [user1547535] (http://stackoverflow.com/users/1547535/user1547535)는 나의 것보다. (그 관측은 대답이 아닌 질문에 대한 의견을 요구할 수 있습니다. 만약 저라면, 제 1 지수가 제 2 지수보다 작은 모든 쌍의 the_products를 사전 식으로 요청했습니다.) – greybeard
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;
}
(질문을 묻는 데 어려움을 겪는 동안 :)이 게시물의 답변은 무엇이며 '결과 배열'은 무엇입니까? (주석은 // 관련되지 않은 이름을 사용합니다.) – greybeard
결과 배열은 [6,10,15]입니다. – user1547535
루프가 기계적으로 당신이 많이 .. – harold
그것은 생산성에 대한 아니다 좋은 @harold하지 않는 것이, 재귀로 변환 할 수 있습니다. 이것은 문제 해결에 관한 것입니다. – user1547535