【问题标题】:Pseudocode - What is wrong about this伪代码 - 这有什么问题
【发布时间】:2017-09-20 15:41:47
【问题描述】:

我正在尝试找出错误

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

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

【问题讨论】:

  • 您是在询问伪代码还是尝试将其翻译成 Python?
  • 如果 n 在您的 while 循环中为零,它会再次减去 3,因此 n 永远不会为零,因此 IF n = 0 永远不会为真。
  • 你真的用纸和铅笔完成过这个吗?
  • n % 3 != 0 有什么问题?
  • 我怀疑这是一个家庭作业问题,其中的任务是解释逻辑,而不是实际尝试编写 % 运算符的显式版本

标签: pseudocode


【解决方案1】:

您使用的是大于 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.

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

【讨论】:

  • 我添加了该过程的分步说明。请记住,计算机的伟大之处在于它们完全按照您的指示行事。还要记住,计算机最糟糕的事情是它们完全按照你告诉他们的去做。
猜你喜欢
  • 2015-04-25
  • 2018-09-09
相关资源
最近更新 更多