begin; comment 321.A60: OCT '90 ERIK SCHOENFELDER THIS IS THE 0. START WITH A NATURAL NUMBER N. 1. IF N IS ODD, SET N TO BE 3 * N + 1 IF N IS EVEN, SET N TO BE N / 2 REPEAT STEP 1 UNTIL N IS EQUAL 1. 2. PRINT THE NUMBER OF REPETITONS. FUN. AND: WHO KNOWS, IF THIS TERMIMATES FOR ANY N... ; integer procedure DOIT(N); value N; integer N; begin; Boolean procedure ODD(X); value X; integer X; ODD := N(N ÷ 2)
2; integer COUNT; COUNT := 0; DO: if ODD(N) then N := 3
N + 1 else N := N ÷ 2; COUNT := COUNT + 1; if N
1 then goto DO; DOIT := COUNT; end ; integer I, N, VAL, MAX, NN; NN := 12; VPRINT("HI!\N N ITERATIONS\N"); for I := 1 step 1 until NN do VPRINT(I, DOIT(I)); VPRINT("..."); VPRINT("\NNOW LOOKING FOR MAXIMA:"); VPRINT("\N N ITERATIONS\N"); N := 0; MAX := -1; for I := 1 step 1 until NN do begin; DO: N := N + 1; VAL := DOIT(N); if VAL
MAX then goto DO; VPRINT(N, VAL); MAX := VAL; end ; VPRINT("...\NDONE."); end ;