This commit is contained in:
trainer2001 2024-07-17 10:41:24 +09:00 committed by GitHub
commit 95e19b2c7c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 0 deletions

View File

@ -0,0 +1,11 @@
import factorialRecursiveTCO from '../factorialRecursiveTCO';
describe('factorialRecursiveTCO', () => {
it('should calculate factorial', () => {
expect(factorialRecursiveTCO(0)).toBe(1);
expect(factorialRecursiveTCO(1)).toBe(1);
expect(factorialRecursiveTCO(5)).toBe(120);
expect(factorialRecursiveTCO(8)).toBe(40320);
expect(factorialRecursiveTCO(10)).toBe(3628800);
});
});

View File

@ -0,0 +1,12 @@
/**
* @param {number} number
* @return {number}
*/
export default function factorialRecursiveTCO(number) {
function fact(number, accumulator = 1) {
if (number < 2) return accumulator;
else return fact(number - 1, accumulator * number);
}
return fact(number);
}