【问题标题】:Nth Fibonacci Term JavaScript *New to JS*第 N 个斐波那契术语 JavaScript *JS 新手*
【发布时间】:2018-04-05 11:27:14
【问题描述】:

<!DOCTYPE HTML>
<html>
<title>Fibonacci Assignment</title>
<head>
    <script>
        function chkInput(){
        var n = parseInt(n1)
        var a,b,r;
        a = 0;
        b = 1;
        r = 1;
            for(var i = 2; i <= n; i++){
                r = a + b;
                a = b;
                b = r;
            }
            alert (r);
        }
    </script>
</head>
<body>
    <input type="text"
           id="n1">
    <input type="button"
           value="Enter"
           onclick="chkInput(n1.value)">
</body>
</html>

我是 JavaScript 新手,我一直在尝试构建一个代码来查找斐波那契数列的第 N 项,其中用户输入一个数字,并且该序列一直运行到第 n 个数字。我的任务是为此使用函数和 for 循环。但是,当我运行它时,无论我输入什么数字,它都会返回 1。我的问题是为什么会这样?我是一名学生,所以我只需要大方向而不是答案。这个sn-p是我目前所拥有的。

【问题讨论】:

  • 我感觉这是你的作业;)
  • @JayEdwards 是的,我已经尝试修复它一周,我只是或多或少想知道我做错了什么,但到目前为止的回复很有帮助
  • 那太酷了,那些早期的学习充满了这些挫败感!希望下面的答案能解决您的问题!

标签: javascript function for-loop input fibonacci


【解决方案1】:

你需要使用像document.getElementById("n1").value这样的DOM函数来获取元素的值

你的算法也是错误的,它应该有a = 1;

function chkInput(){
        var n = parseInt(document.getElementById("n1").value)
        var a,b,r;
        a = 1;
        b = 1;
        r = 1;
       
         for(var i = 2; i <= n; i++){
                r = a + b;
                a = b;
                b = r;
                
         }   
            alert (r);
        }
<!DOCTYPE HTML>
<html>
<title>Fibonacci Assignment</title>
<head>
    <script>
       
    </script>
</head>
<body>
    <input type="text"
           id="n1">
    <input type="button"
           value="Enter"
           onclick="chkInput(n1.value)">
</body>
</html>

【讨论】:

    【解决方案2】:

    您没有将文本输入值捕获为参数。

    你有:

    checkInput()
    

    应该是

    chkInput(n1)
    

    所以你的台词

    var n = parseInt(n1);
    

    正在解析undefined,所以 n 的值现在是 NAN(不是数字),所以 for 循环永远不会被执行。

    function chkInput(n1) {
      var n = parseInt(n1);
      var a, b, r;
      a = 0;
      b = 1;
      r = 1;
      for (var i = 2; i <= n; i++) {
        r = a + b;
        a = b;
        b = r;
      }
      alert(r);
    }
    <input type="text" id="n1">
    <input type="button" value="Enter" onclick="chkInput(n1.value)">

    【讨论】:

      【解决方案3】:

      你几乎完成了你的任务。

      您错过了接收函数定义中的值。

      function chkInput(){ 更改为 function chkInput(n1){ 将完成您的任务。

      在下面找到您的工作代码 sn-p。

      <!DOCTYPE HTML>
      <html>
      <title>Fibonacci Assignment</title>
      <head>
          <script>
              function chkInput(inputValue) {
                var n = parseInt(inputValue)
                var a,b,r;
                a = 0;
                b = 1;
                r = 1;
                 for(var i = 2; i <= n; i++){
                      r = a + b;
                      a = b;
                      b = r;
                  }
                  alert (r);
              }
          </script>
      </head>
      <body>
          <input type="text" id="n1">
          <input type="button" value="Enter" onclick="chkInput(n1.value)">
      </body>
      </html>

      【讨论】:

        猜你喜欢
        • 2022-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-12
        • 1970-01-01
        • 2021-09-03
        • 2017-01-29
        • 2015-04-17
        相关资源
        最近更新 更多