带有for循环的伪代码

pseudocode with for loop

我有些困惑:

for i = 1 to n

这个伪代码是指for(i=1; i<n; i++)还是for(i=1; i<=n; i++)

如果他们中的一个,那么另一个的伪代码是什么?

它与上下文高度相关,并且取决于编写它的人。 (这也有点取决于伪代码旨在转换成的编程语言。)

如果是在采访场景中,最好问一下这是否“包含 n”。因为它可能是任何一种情况。

(我知道这个答案可能没有那么有用。很抱歉,但这似乎没有明确的答案。)

应该理解为包括一个迭代,其中in的值。

但是,对于伪代码没有严格的规定,所以如果对一段实际的伪代码有疑问,那么这意味着代码没有实现它应该做的事情:明确地描述一个不考虑任何编程语言的算法。

这里有一些论据为什么应该理解为 include n:

  • 当用简单的英语告诉某人从 1“数到 100”时,我们的意思是他们应该在末尾加上 100。这可能是最有力的论据。
  • 据我所知,没有一种编程语言会在 for 循环语法中使用 to 关键字,其中 to 后面的值不会包含在迭代中。另一方面,BASIC like languages (such as ) 具有该语法,并且“to”值将用于最终迭代。
  • Wikipedia 上给出了一些伪代码循环的示例,并且在使用 to 关键字的地方,最终迭代使用该值。
  • 如果此循环的目的是访问 n 元素数组中的每个值(一种非常常见的情况),那么就没有歧义:for i = 1 to n 告诉我们数组的第一个元素的位置为 1,因此它的最后位置是位置 n。在伪代码中使用这种从 1 开始的数组索引并不少见,因为这对非程序员来说更直观。但是,如果在这样的数组上下文中,您在伪代码中看到 for i = 0 to n,则应该会发出一些警报。那肯定会让人模棱两可。