Проблема действительно интересная.Это return
NaN
, потому что когда вы возвращаете n
как String
, так как function
вызывается рекурсивно, поэтому он не может выполнять арифметические операции на следующем уровне.
Он никогда не закончится для определенных чисел, таких как 55
function countSixes(n,firstTime=true){
if (n === 0) return 0;
else if (n === 1) return 1;
else n = (countSixes(n-1,false) + countSixes(n-2,false)) / 2;
if(firstTime) return n.toFixed(10); // return string
else return parseFloat(n.toFixed(10)); // return float
}