Các n
- th gốc của x
là một số r
sao cho r
với sức mạnh của 1/n
là x
.
Trong số thực, có một số subcases:
- Có hai giải pháp (cùng giá trị với dấu hiệu ngược lại) khi
x
là tích cực và r
là số chẵn.
- Có một giải pháp tích cực khi
x
là số dương và r
là số lẻ.
- Có một giải pháp tiêu cực khi
x
là số âm và r
là số lẻ.
- Không có giải pháp khi
x
là số âm và thậm chí r
.
Kể từ Math.pow
không giống như một cơ sở tiêu cực với một số mũ phi nguyên, bạn có thể sử dụng
function nthRoot(x, n) {
if(x < 0 && n%2 != 1) return NaN; // Not well defined
return (x < 0 ? -1 : 1) * Math.pow(Math.abs(x), 1/n);
}
Ví dụ:
nthRoot(+4, 2); // 2 (the positive is chosen, but -2 is a solution too)
nthRoot(+8, 3); // 2 (this is the only solution)
nthRoot(-8, 3); // -2 (this is the only solution)
nthRoot(-4, 2); // NaN (there is no solution)
Bạn muốn bao nhiêu rễ? Chỉ đơn giản nhất, hoặc tất cả chúng? –