带有for循环的伪代码
pseudocode with for loop
我有些困惑:
for i = 1 to n
这个伪代码是指for(i=1; i<n; i++)
还是for(i=1; i<=n; i++)
?
如果他们中的一个,那么另一个的伪代码是什么?
它与上下文高度相关,并且取决于编写它的人。 (这也有点取决于伪代码旨在转换成的编程语言。)
如果是在采访场景中,最好问一下这是否“包含 n”。因为它可能是任何一种情况。
(我知道这个答案可能没有那么有用。很抱歉,但这似乎没有明确的答案。)
应该理解为包括一个迭代,其中i
取n
的值。
但是,对于伪代码没有严格的规定,所以如果对一段实际的伪代码有疑问,那么这意味着代码没有实现它应该做的事情:明确地描述一个不考虑任何编程语言的算法。
这里有一些论据为什么应该理解为 include n
:
- 当用简单的英语告诉某人从 1“数到 100”时,我们的意思是他们应该在末尾加上 100。这可能是最有力的论据。
- 据我所知,没有一种编程语言会在
for
循环语法中使用 to
关键字,其中 to
后面的值不会包含在迭代中。另一方面,BASIC like languages (such as vba) 具有该语法,并且“to”值将用于最终迭代。
- 在 Wikipedia 上给出了一些伪代码循环的示例,并且在使用
to
关键字的地方,最终迭代使用该值。
- 如果此循环的目的是访问
n
元素数组中的每个值(一种非常常见的情况),那么就没有歧义:for i = 1 to n
告诉我们数组的第一个元素的位置为 1,因此它的最后位置是位置 n
。在伪代码中使用这种从 1 开始的数组索引并不少见,因为这对非程序员来说更直观。但是,如果在这样的数组上下文中,您在伪代码中看到 for i = 0 to n
,则应该会发出一些警报。那肯定会让人模棱两可。
我有些困惑:
for i = 1 to n
这个伪代码是指for(i=1; i<n; i++)
还是for(i=1; i<=n; i++)
?
如果他们中的一个,那么另一个的伪代码是什么?
它与上下文高度相关,并且取决于编写它的人。 (这也有点取决于伪代码旨在转换成的编程语言。)
如果是在采访场景中,最好问一下这是否“包含 n”。因为它可能是任何一种情况。
(我知道这个答案可能没有那么有用。很抱歉,但这似乎没有明确的答案。)
应该理解为包括一个迭代,其中i
取n
的值。
但是,对于伪代码没有严格的规定,所以如果对一段实际的伪代码有疑问,那么这意味着代码没有实现它应该做的事情:明确地描述一个不考虑任何编程语言的算法。
这里有一些论据为什么应该理解为 include n
:
- 当用简单的英语告诉某人从 1“数到 100”时,我们的意思是他们应该在末尾加上 100。这可能是最有力的论据。
- 据我所知,没有一种编程语言会在
for
循环语法中使用to
关键字,其中to
后面的值不会包含在迭代中。另一方面,BASIC like languages (such as vba) 具有该语法,并且“to”值将用于最终迭代。 - 在 Wikipedia 上给出了一些伪代码循环的示例,并且在使用
to
关键字的地方,最终迭代使用该值。 - 如果此循环的目的是访问
n
元素数组中的每个值(一种非常常见的情况),那么就没有歧义:for i = 1 to n
告诉我们数组的第一个元素的位置为 1,因此它的最后位置是位置n
。在伪代码中使用这种从 1 开始的数组索引并不少见,因为这对非程序员来说更直观。但是,如果在这样的数组上下文中,您在伪代码中看到for i = 0 to n
,则应该会发出一些警报。那肯定会让人模棱两可。