代码之家  ›  专栏  ›  技术社区  ›  user8386896

伪代码-这有什么错

  •  0
  • user8386896  · 技术社区  · 7 年前

    我正在努力找出错误

    这段代码应该能找出用户输入的正整数是否可以被数字3整除。

    n = userinput
    WHILE n ≥ 0
      n = n - 3
    ENDWHILE
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   PeskyToaster    7 年前

    您使用的是大于或等于,因此在n=0时不会跳出循环,只有n=-3会触发ELSE语句。“等于”方面让你走得太远了。

    回答评论:

    N = 3
    //first pass
    WHILE (3 >= 0) // true
    n = 3-3 //n now 0
    
    //second pass
    WHILE (0 >= 0) //True, 0 is equal to 0
    n = 0-3 //n now -3
    
    //third pass
    WHILE(-3 >= 0) //False break out of loop
    
    IF(-3 == 0) // false so we jump to the else
    
    ELSE: 3 is not divisible by 3.
    

    一种快速的方法可以轻松地抽查没有按预期执行的循环,就是用简单的输入手动运行它们。