伪代码 - 这有什么不对

时间:2017-09-20 15:41:48

标签: pseudocode

我正在寻找错误

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

n = userinput
WHILE n ≥ 0
  n = n - 3
ENDWHILE
IF n = 0 THEN 
    OUTPUT 'is divisible by 3'
ELSE:
    OUTPUT 'is not divisible by 3'

无论输出什么'都不能被3'整除

1 个答案:

答案 0 :(得分:0)

你使用大于OR EQUAL TO,这样你就不会在n = 0时跳出循环,只有n = -3才会触发你的ELSE语句。 EQUAL TO方面会让你走得太远。

回答评论: 使用>而不是> =。基本上,写入的代码在评估条件时绝不允许n等于0。使用类似3的数字跟踪循环的每个步骤。

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.

轻松检查未按预期执行的循环的一种快捷方法是只需轻松输入即可手动运行它们。