Informacje dla kandydatów

Czy ta pętla zawsze kończy swoje działanie?

Czy dla dowolnej całkowitej dodatniej wartości n poniższa pętla w języku C kończy pracę?

while(n % 2 != 0) n = (3 * n + 1) / 2;

Wskazówka: aby pokazać, że pętla zawsze kończy pracę, należy wskazać taką całkowitą wielkość, która przyjmuje tylko nieujemne wartości i maleje po każdym wykonaniu instrukcji wewnątrz pętli (liczby naturalne nie mogą tworzyć nieskończonego ciągu malejącego).

Zadanie zaczerpnięto z książki S. Alagić, M.A. Arbib. Projektowanie programów poprawnych i dobrze zbudowanych. WNT, Warszawa 1982.