首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第n个斐波那契术语JavaScript *JS的新特性*

第n个斐波那契术语JavaScript *JS的新特性*
EN

Stack Overflow用户
提问于 2017-10-24 23:23:46
回答 3查看 465关注 0票数 0

代码语言:javascript
复制
<!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。我的问题是为什么会这样呢?我是一个学生,所以我只需要大致的方向,而不是答案。这段代码就是我到目前为止所拥有的。

EN

回答 3

Stack Overflow用户

发布于 2017-10-24 23:33:51

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

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

代码语言:javascript
复制
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);
        }
代码语言:javascript
复制
<!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>

票数 0
EN

Stack Overflow用户

发布于 2017-10-24 23:38:48

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

你有:

代码语言:javascript
复制
checkInput()

它应该是

代码语言:javascript
复制
chkInput(n1)

所以你的台词

代码语言:javascript
复制
var n = parseInt(n1);

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

代码语言:javascript
复制
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);
}
代码语言:javascript
复制
<input type="text" id="n1">
<input type="button" value="Enter" onclick="chkInput(n1.value)">

票数 0
EN

Stack Overflow用户

发布于 2017-10-24 23:51:50

你的作业已经差不多完成了。

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

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

在下面找到你的工作代码片段。

代码语言:javascript
复制
<!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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46914358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档