Javascript 冰雹序列

标签 javascript while-loop sequence

所以我试图为冰雹获取这个函数,但我似乎无法让它在一行上全部打印。代码如下:

var hailStoneSeq = function(n){
   var seq = n + " "

    while(n != 1)
   {
       if(n % 2 == 0)
       {
          n = n / 2
          console.log(n)
          var newSeq = n
       }    
       else
       {    
          n = ((n * 3) + 1)
          console.log(n)
          newSeq =  n
        }

   }

   return seq + newSeq  
  }

现在,当我运行它时,console.log 可以工作并显示整个序列。但是return语句只返回输入的值,所以n本来就是1,就像这样:

 hailStoneSeq(5)
 16 
 8
 4
 2
 1
 "5 1"

如何获得最后的 return 语句以在一行上返回整个序列?

最佳答案

删除 console.log(n) 行并在函数返回之前创建一个输出数组。另外,您不需要 newSeq 变量,只需使用 n

编辑:误解了问题,代码已修复

function hailStoneSeq(n){
    var seq=[n]

    while(n!=1){
        if(n%2==0) n/=2
        else n=(n*3)+1

        seq.push(n)
    }

    return seq.join(' ')
}

console.log(hailStoneSeq(5))

关于Javascript 冰雹序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40557444/

相关文章:

sql-server - TSQL 使用序列插入表

重新排列权重序列的算法

javascript - 尝试使用 requestanimationframe 使对象跳转的代码不起作用

c while循环入口

python-2.7 - 并行执行时,Tensorflow 的 tf.while_loop 是否自动捕获依赖项?

php - 如何使用 php 从选择查询中插入数据

algorithm - 根据匹配规则按连续对过滤数组或列表

javascript - 制作特殊格式的js代码

javascript - Vue.js - 带有查询参数的搜索表单

javascript - jquery 验证瑞典语字符