mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-09-20 07:43:04 +08:00
Merge 310343e0e1
into ca3d16dcce
This commit is contained in:
commit
17f5219d95
@ -19,5 +19,8 @@ describe('fastPowering', () => {
|
||||
expect(fastPowering(16, 16)).toBe(18446744073709552000);
|
||||
expect(fastPowering(7, 21)).toBe(558545864083284000);
|
||||
expect(fastPowering(100, 9)).toBe(1000000000000000000);
|
||||
expect(fastPowering(5, -5)).toBe(0.0003200000000000002);
|
||||
expect(fastPowering(-5, 5)).toBe(-3125);
|
||||
expect(fastPowering(-5, -5)).toBe(-0.0003200000000000002);
|
||||
});
|
||||
});
|
||||
|
@ -14,6 +14,12 @@ export default function fastPowering(base, power) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (power < 0) {
|
||||
const powerNext = power * -1;
|
||||
const baseNext = 1 / base;
|
||||
return fastPowering(baseNext, powerNext);
|
||||
}
|
||||
|
||||
if (power % 2 === 0) {
|
||||
// If the power is even...
|
||||
// we may recursively redefine the result via twice smaller powers:
|
||||
|
Loading…
Reference in New Issue
Block a user