Преобразование с плавающей запятой в строку - JS - PullRequest
0 голосов
/ 29 января 2019

Итак, я сейчас работаю над этой функцией

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


То, что я пробовал

  1. "" + значение
  2. Строка (значение)
  3. value.toString ()
  4. value.toFixed (2)

Надеюсь получить ответ

Спасибо!

Ответы [ 3 ]

0 голосов
/ 29 января 2019

Вы можете преобразовать конечное значение в строку с требуемыми десятичными числами.

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));
0 голосов
/ 29 января 2019

Проблема действительно интересная.Это 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
    }
0 голосов
/ 29 января 2019

Первый вариант у меня работает

<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>
...