Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thực hiện phép lũy thừa trên mảng số trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên arr có độ dài chẵn. Giả sử một số num mà:

num = (arr[0]^2 + arr[1]^2) * (arr[2]^2 + arr[3]^2) * ... * (arr[n-2]^2 + arr[n-1]^2)

Trong đó n là độ dài mảng. Hàm cần tìm và trả về mảng hai số [A, B] sao cho:

A^2 + B^2 = num

Ví dụ, nếu mảng là [1, 2, 3, 4], thì num = (1+4)*(9+16) = 125. Kết quả nên là [2, 11] vì 2^2 + 11^2 = 125.

Ví dụ

Dưới đây là mã nguồn:

const arr = [1, 2, 3, 4]; 
const findMatchingSumArray = (arr = []) => { 
  let squaredSum = 1; 
  for(let i = 0; i < arr.length - 1; i += 2){ 
    const curr = arr[i]; 
    const next = arr[i + 1]; 
    squaredSum *= (Math.pow(curr, 2) + Math.pow(next, 2)); 
  }; 
  for(let k = 0; k * k < squaredSum; k++){ 
    for(let j = 0; (k * k) + (j * j) <= squaredSum; j++){ 
      if((k * k) + (j * j) === squaredSum){ 
        return [k, j]; 
      }; 
    }; 
  }; 
  return []; 
}; 
console.log(findMatchingSumArray(arr));

Kết quả

Kết quả đầu ra trong console:

[2, 11]