【问题标题】:snail in the well javascript challenge井中蜗牛 JavaScript 挑战
【发布时间】:2021-04-27 13:55:38
【问题描述】:

这是我关于堆栈溢出的第一个问题,尽管在我没有获得足够的详细信息来理解为什么以这种方式编写代码之前已经回答了这个问题,而且我不只是想在不理解的情况下复制和粘贴解决方案.

蜗牛每天爬 7 英尺,每晚滑回 2 英尺,蜗牛需要多少天才能从给定深度的井中出来? 示例输入 31 样本输出 6 这是我写的,但是没有用

function main() {
var depth = parseInt(readLine(), 10);
//your code goes here
let climb = 0, days = 0;
   for(climb + 7; climb < depth; days++){
       climb += 2;
       console.log(days);
   


【问题讨论】:

  • 究竟是什么不起作用?缺少代码,因此您应该收到语法错误。这就是你在说的吗?然而,一个明显的问题是你永远不会在任何地方减去值,那么你如何解释“滑回”部分呢?
  • 那么您在网上找到了哪些以及哪些具体您对此不了解?到目前为止,您是如何调试代码的(看起来存在一些语法错误,所以先修复这些错误)。一步一步来。您也可以尝试先编写伪代码,然后将其转换为具体实现。
  • 解决方案是根本不使用循环,代码不应该被视为现实生活,即您不必制作蜗牛并实现它的物理来解决结果,代码可以做基础数学..console.log(depth / 5)
  • @LawrenceCherone,depth/5 过于简单化了。例如,在初始深度为 6 或 7 时,逃逸天数 = 1,而不是 1 和 2/5 天,或 2 天。它可以用数学来完成,只是不是很简单的数学

标签: javascript loops


【解决方案1】:

试试这个:

  var depth = parseInt(readline(), 10);
  var day = 0;
  for(let climb = 0; climb <= depth;) {
      day +=1;
      climb += 7;
      if(climb >= depth) {
          break;
      }
      climb -= 2;
  }
  console.log(day);

【讨论】:

    【解决方案2】:

    只需输入并写下这个 var day= Math.ceil((depth-2)/5); 并输出!

    【讨论】:

      【解决方案3】:
      /* day --> 7++
      night --> 2-- */
      var day = 0;
      var total = 0;
      var input = 41;
       while (input>total){
           day++;
           total+=7;
         if (total>=input){
             console.log(day);
             break;
         }
         total = total -2
       }
      

      【讨论】:

      • 欢迎来到 Stack Overflow。请阅读How to Answer。在没有解释的情况下转储代码很少有帮助。
      • 下次我会记住这一点的,谢谢
      【解决方案4】:

      如 cmets 中所述,无需循环。只需计算出问题的数学并加以利用。

      function snailCalc (depth, dailyGain, nightlyLoss) {
        var days = 1;
        var netGain = dailyGain-nightlyLoss;
        if(depth > dailyGain ) {   
          //Basic calc based on net gain taking the first day into account
          days = (depth-dailyGain)/netGain;
          //Add the fist day
          days += 1;
          //We want whole days so use Mathc.ceil
          days = Math.ceil(days)
          //Or we could do all that in one line
          //days = Math.ceil(((depth-dailyGain)/netGain) + 1);
        }
        return days;
      }
      
      const gain = 7;
      const loss = 2
      
      for(var d = 1; d < 31; d++)
      {
        console.log(`Depth: ${d}, Days: ${snailCalc(d, gain, loss)}` )
      }
      Bob

      【讨论】:

        【解决方案5】:
        function main() {
            var depth = parseInt(readLine(), 10);
            console.log(Math.round(depth / 5))
        }
        

        【讨论】:

        • 欢迎来到 Stack Overflow。请阅读How to Answer。在没有解释的情况下转储代码很少有帮助。
        【解决方案6】:

        您可以更改函数输入并测试snipet:

        for more you can run code and check result ↗

        例如:main(128) // 26

        function main(input) {
          let depth = input
        
          let climbsUp = 7
          let slipsBack = 2
          let distance = climbsUp - slipsBack
          let days = 0;
          let rDepth = Math.round(depth / distance)
        
          for (let i = 0; i < rDepth; i++) {
            distance = distance + 5
            days = ++days
            if (days === 6) {
              console.log('days will it take the snail to get out of a well : ' + rDepth)
            } else {
              console.log('days will it take the snail to get out of a well : ' + rDepth)
              break;
            }
        
          }
        }
        
        main(42);
        main(128);

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 2022-11-05
        • 2018-01-21
        • 1970-01-01
        • 1970-01-01
        • 2013-10-28
        • 2020-06-07
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        相关资源
        最近更新 更多