所以我目前正在研究这个函数
const countSixes = n => {
if (n === 0) return 0;
else if (n === 1) return 1;
else n = (countSixes(n-1) + countSixes(n-2)) / 2;
return n;
}
所以我的问题是如何将最终浮点值转换为字符串?
每次调用函数并尝试转换浮点数后,它都会返回 NaN
我尝试过什么
- " + 值
- 字符串(值)
- value.toString()
- 值固定(2)
希望得到答案
谢谢!
第一个选项对我有用
<script>
const countSixes = n => {
if (n === 0) return 0;
else if (n === 1) return 1;
else n = (countSixes(n-1) + countSixes(n-2)) / 2;
return n;
}
alert(countSixes(12) + "")
</script>
这个问题真的很有趣。它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
}
您可以将最终值转换为具有所需小数的字符串。
const countSixes = n => {
if (n === 0) return 0;
if (n === 1) return 1;
return (countSixes(n - 1) + countSixes(n - 2)) / 2;
}
console.log(countSixes(30).toFixed(15));