Algorithm 1. QUEUESTUFF(n)
Input: Integer n
1) Let Q = an empty Queue
2) For i = 1 to n
3) Q.Enqueue(i)
4) End For
5) For i = 1 to n-1
6) Let X = Q.Dequeue()
7) End For
8) Let X = Q.Dequeue()
Output: The contents of X
Q.Enqueue(X) add item X to the queue
X = Q.Dequeue() extracts an item from the queue and assigns it to X.
If the queue is empty then -999 is returned.
Если п> 0 Я понимаю, что этот алгоритм будет выводить п-1, например, при п = 6, X будет выводиться, которая будет равна 5.Анализ псевдокод
Однако, что если п < 0? Может ли циклы перейти от 1 к отрицательным? Если нет ... Я считаю, что ни одна из циклов For не запустилась, давая нам выход из -999 (поскольку очередь пуста).
Если петли могут пойти в минусы, то, скажем, n = -2. Очередь будет {1, 0, -1, -2}. Затем мы должны были удалить один-три раза ... Создание X (последний элемент, на который был применен dequeue) -2. Итак, что теперь возвращает этот алгоритм? Довольно много n = X правильно?
Петли могут входить в отрицательные стороны, и вы правы. – isaach1000
Это очень неправильно, если мы предположим, что для (int i = 1; true; i--) ваша очередь имеет 4 числа и не может удалить из нее 5 номеров, поэтому x = -999 –
, и в вашем вопросе вы сказали, что если n> 0, я понимаю, что этот алгоритм выведет n-1, вы уверены, что хотите запустить 8-ю строку? –