JSFiddle - React, Tailwind, and code Playground
JavaScript
/**
* @param {number} n
* @return {'A' | 'B' | null}
*/
function findWinner(n) {
// A : true
// B : false
if (!n || n <= 0)
return null;
return whoWins(n - 1, true) ? 'A' : 'B';
}
function whoWins(n, player) {
if (n <= 0)
return !player;
return whoWins(n - (player ? 2 : 1), !player);
}
/** Test cases **/
console.log(findWinner(1)); // B
console.log(findWinner(2)); // A
console.log(findWinner(3)); // A
console.log(findWinner(4)); // B
console.log(findWinner(0)); // null
console.log(findWinner(null)); // null