This code is an implementation of a linearly recursive bowling scorer following the rules from Wikipedia.
It does not use mutable state. Once created values don't change.
The main entrypoint is the Game.score()
function which accepts rolls from one player as a sequence of arguments. The Game.score()
function delegates work to the recursive Game._scorer()
. This iterates over all provided rolls keeping track of any bonuses which are due.
npm test
For more information on recursion, consult the Factorial example from SICP.