伪代码 - 这有什么问题

Pseudocode - What is wrong about this

我正在尝试查找错误

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

n = userinput
WHILE n ≥ 0
  n = n - 3
ENDWHILE

您使用大于或等于,因此您不会在 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.

轻松抽查未按预期执行的循环的一种快速方法是通过简单的输入手动 运行 通过它们。