For loop 伪码分析

For loop 伪码分析,for-loop,queue,pseudocode,For Loop,Queue,Pseudocode,如果n>0,我知道该算法将输出n-1,例如,如果n=6,将输出X,X等于5 但是,如果n0,队列将按以下顺序(第1行到第4行)填充: 在第5行到第7行中,您将逐个提取(FIFO:先进先出): 最后在第8行提取最后一个元素: 1, 2, 3, ..., n-1 正如所述的算法一样,我非常确定For语句只在n>=1时执行,但对于n=2+abs(n)值和1-(n-1)+1=3+abs(n)在第5行到第7行中提取了值,所以这里的队列已经为空。在第8行中,将返回从现在为空的队列中读取的数据 X = n

如果n>0,我知道该算法将输出n-1,例如,如果n=6,将输出X,X等于5

但是,如果n<0怎么办?循环可以从1变为负数吗?如果不是。。。我相信For循环都不会运行,因此我们的输出为-999(因为队列是空的)


如果循环可以变成负数,那么假设n=-2。队列将是{1,0,-1,-2}。我们将不得不排1到3次队。。。生成X(应用出列的最后一项)-2。那么现在这个算法返回了什么呢?几乎n=X正确吗?

对于n>0,队列将按以下顺序(第1行到第4行)填充:

在第5行到第7行中,您将逐个提取(FIFO:先进先出):

最后在第8行提取最后一个元素:

1, 2, 3, ..., n-1
正如所述的算法一样,我非常确定
For
语句只在
n>=1
时执行,但对于
n<1
的情况(以及从
1,0,-1,…,n
运行的
For
语句的
n>=2+abs(n)
值和
1-(n-1)+1=3+abs(n)
在第5行到第7行中提取了值,所以这里的队列已经为空。在第8行中,将返回从现在为空的队列中读取的数据

X = n

但正如我所说的,我假设I=1到n的
根本不执行,因为
nLoops可能会变成负数,你是对的,这是大错特错,如果我们假设(int I=1;true;I--)你的队列有4个数字,不能从中排出5个数字,在你的问题中,你说如果n>0,我知道这个算法会输出n-1,你确定要运行第8行吗?如果我的理解是正确的,如果n=-2,你将得到队列中的4个项目。然后,您必须退出5号队列。由于此时列表为空,alg将返回-999。我不是100%确定这一点,但是如果试图将比数组中可用的项目更多的项目出列,也会产生运行时错误?有人能证实这一点吗。
1, 2, 3, ..., n-1
X = n
X = -999
X = -999