merge: Added LucasSeries Implementation (#808)

* Added LucasSeries

* Added more tests and renamed function

* Changed RangeError to TypeError
This commit is contained in:
Dumby
2021-10-25 10:03:02 +05:30
committed by GitHub
parent e8d862ca94
commit 69a397cc33
2 changed files with 48 additions and 0 deletions

33
Maths/LucasSeries.js Normal file
View File

@ -0,0 +1,33 @@
/*
Program to get the Nth Lucas Number
Article on Lucas Number: https://en.wikipedia.org/wiki/Lucas_number
Examples:
> loopLucas(1)
1
> loopLucas(20)
15127
> loopLucas(100)
792070839848372100000
*/
/**
* @param {Number} index The position of the number you want to get from the Lucas Series
*/
function lucas (index) {
// index can't be negative
if (index < 0) throw new TypeError('Index cannot be Negative')
// index can't be a decimal
if (Math.floor(index) !== index) throw new TypeError('Index cannot be a Decimal')
let a = 2
let b = 1
for (let i = 0; i < index; i++) {
const temp = a + b
a = b
b = temp
}
return a
}
export { lucas }

View File

@ -0,0 +1,15 @@
import { lucas } from '../LucasSeries'
describe('Nth Lucas Number', () => {
it('should return the 20th Lucas Number', () => {
expect(lucas(20)).toBe(15127)
})
it('should return the 20th Lucas Number', () => {
expect(lucas(0)).toBe(2)
})
it('should return the 20th Lucas Number', () => {
expect(lucas(100)).toBe(792070839848372100000)
})
})