Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Algo_IT(A,i,j,x)
- STI=STJ=STY=STRET=STX=LAST=NIL
- CI=I; CJ=J;
- while(CJ-CI >= 0 || STJ != NIL)do
- if(CJ-CI>=0)then
- if(CJ-CI>=1)then
- y=RAND()%2
- if(x=1)then
- STI=STJ=STX=STY=PUSH()
- CI=(CI+CJ)+1/2
- X=Y
- else
- STI=STJ=STX=STY=PUSH()
- CJ=(CI+CJ)/2
- X=Y
- else
- RET=A[CI]
- +USCITA SOLITA LAST=CJ ; CJ = CI+1
- else
- TOP(STX,STY,STJ,STI)
- if(x=1)then //distinguo primo cerchio di chiamate dal secondo
- ret=val //RITORNO DA PRIMA CHIAMATA DEL CERCHIO E PROSEGUO
- if(last!=ci)then
- if(ret%2=0)then
- CJ=(CI+CJ)/2
- X=1-Y //PREPARO SECONDA CHIAMATA DEL PRIMO CERCHIO
- else
- + USCITA SOLITA con POP(tutto) //Perché potrei non entrare in questo if
- else //DA QUI STO SIMULANDO CHE NON STO NELLA PRIMA CHIAMATA MA NELLA SECONDA
- if(ret%2=0)then
- ret=val
- + USCITA SOLITA
- else //ORA STO NEL SECONDO CERCHIO CON QUESTO ELSE
- if(last!=ci)then //DISCRIMINO RIGA 8 CON 10
- ret=val
- STRET=PUSH(STRET,RET)
- if(ret%2=1)then
- CI=(CI+CJ)/2
- X=1-Y
- else
- + USCITA SOLITA CON POP TUTTO
- else //se non provengo da riga 8 allora da 10
- if(ret%2=1)then
- ret=top(STRET)+val
- POP(STRET)
- PUSH(STRET,RET) //CAMBIO VALORE DI RET IN UNO NUOVO
- POP(TUTTO)
- + USCITA SOLITA
Add Comment
Please, Sign In to add comment