【问题标题】:I am trying to use Fibonacci numbers to print out 15 numbers from the number the use inputs我正在尝试使用斐波那契数字从使用输入的数字中打印出 15 个数字
【发布时间】:2021-02-24 21:22:31
【问题描述】:

我希望用户输入一个数字,然后我希望我的 javascript 从用户输入的数字中输出接下来的 15 个数字。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fibonacci</title>
<body>
<P>Please input a number between 10 and 25</P>
<input type text="text" id="integer" />
   <input type="button" id="Enter" value="Enter" onclick="fibonacci_series(integer.value)"/>
    
   
   <p id="output"></p>
<p id="demo"></p>
<script type="text/javascript">
var fibonacci_series = function (n) 
{
  if (n ==1) 
  {
var loop = [0,1];
   document.getElementById("output").innerHTML = loop;
  return loop;
  } 
  else 
  {
    var s = fibonacci_series(n - 1);
    s.push(s[s.length - 1] + s[s.length - 2]);
    document.getElementById("output").innerHTML =s;
    return s;
  }
   
};
 
    

</script>


</body>
</head>
</html>

这是我输入 10 运行时的输出

0,1,1,2,3,5,8,13,21,34,55

我希望能够输入 10-25 之间的整数,并让它从用户输入中打印接下来的 15 个斐波那契数。

【问题讨论】:

  • 请提供比“我做错了什么”更好的问题陈述。发生了什么不该发生的事情?什么不应该发生?您在控制台中收到了哪些错误消息?
  • 你说得对,我的错。

标签: javascript html fibonacci


【解决方案1】:

非递归解决方案,因为您已经在构建值列表,并且溢出调用堆栈的风险较小

如果我对问题陈述的理解正确,你有兴趣打印接下来的 15 个 fib 数字,这意味着当你输入 10 时,你想从第 10 个 fib 数字打印到第 25 个 fib 数字

var fibonacci_series = function (n) 
{
  n = parseInt(n);
  ln = n + 15;
  s = [0 , 1];
  var i = 1;
  while (i < ln){
    s.push(s[s.length - 2] + s[s.length - 1]);
    ++i;
  }
  document.getElementById("output").innerHTML = s.slice(n);
  return s;
};

鉴于您在下面的评论,这是微不足道的

var fibonacci_series = function (n) 
{
  n = parseInt(n);
  s = [0 , n];
  var i = 0;
  while (i < 15){
    s.push(s[s.length - 2] + s[s.length - 1]);
    ++i;
  }
  document.getElementById("output").innerHTML = s.slice(n);
  return s;
};

【讨论】:

  • 我想让用户输入一个介于 10 和 25 之间的数字,所以假设用户打印 12。我希望将数字添加为 0、12、12、24、36、60、96等,直到我们打印出 15 个数字
【解决方案2】:

var btn = document.getElementById('btn');
btn.addEventListener('click', () => console.log(fibonacci_series(10)));

var fibonacci_series = function (n, c = 0) {
  if (c == 0) {
    n += 15
  }
  if (n ==1) 
  {
    var loop = [0,1];
    return loop;
  } else {
    var s = fibonacci_series(n - 1, c + 1);
    s.push(s[s.length - 1] + s[s.length - 2]);
    return s;
  }
   
};
&lt;button id="btn"&gt;Click Me&lt;/button&gt;

c 变量计算调用堆栈,所以当它第一次调用函数时,用户给定的范围将增加 15(我相信这就是你要找的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2015-01-04
    • 2018-04-02
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多