Trong vật lý, điện trở tương đương của các điện trở mắc nối tiếp và song song được tính như sau:
- Nối tiếp:
R = R1 + R2 + R3 + ... - Song song:
1/R = 1/R1 + 1/R2 + 1/R3 + ...(hoặcR = 1 / (1/R1 + 1/R2 + ...))
Viết hàm nhận vào chuỗi 'series' hoặc 'parallel' và n số đại diện cho điện trở, trả về điện trở tương đương.
Giải pháp
Mã triển khai:
const r1 = 5, r2 = 7, r3 = 9;
const equivalentResistance = (combination = 'parallel', ...resistors) => {
if (combination === 'parallel') {
// Sai trong code gốc: reduce không tính đúng công thức song song
// Cách đúng: 1 / sum(1/Ri)
return 1 / resistors.reduce((acc, val) => acc + 1/val, 0);
}
// Nối tiếp: tổng các điện trở
return resistors.reduce((acc, val) => acc + val, 0);
};
console.log(equivalentResistance('parallel', r1, r2, r3));
Kết quả
Đầu ra trong console (với công thức đúng):
2.0277777777777777
Lưu ý: Code gốc có lỗi logic khi tính điện trở song song (dùng (1/acc) + (1/val) thay vì cộng nghịch đảo). Đã sửa trong ví dụ trên.