I’m trying to write a recursive function that takes two parameters – an integer input, n, and an integer base, m – and returns a string representation of the number in Base m. I’m stuck can someone help?
const toStr = (n, base) => { //when no remainder return 1 if(n % base === 0) return 1; if(n % base >= 1){ return toStr(Math.floor(n/base))+(n % base); } return " "; } toStr(199, 10) //'199' toStr(14, 8)//'16' toStr(30, 2)//'11110'
Advertisement
Answer
You forgot to include base
in recursive call
And to reduce complexity, the base case of this recursion call is to check whether n is zero, then return empty string to concat with the returned from upper stack call
const toStr = (n, base) => { //when no remainder return 1 if (!n) { return ""; } return toStr(Math.floor(n / base), base) + (n % base); }; console.log(toStr(199, 10)); //'199' console.log(toStr(14, 8)); //'16' console.log(toStr(30, 2)); //'11110'