Ok, con quello schema ho capito parecchio e ti ringrazio!
Adesso vedo di dire cosa accade, considerando array iniziale
b[7,4,9]
La prima chiamata if(7<9), ok, verificato e si va direttamente a chiamata due, la chiamata due ha if(4<9), ok, verificato quindi da chiamata due si ha un return e si stampa il 4.
Si riparte da chiamata due e siccome ancora e' ancora verificato if(7<9), si porta alla stampa il numero 7.
Si riparte da chiamata due a chiamata 3 ma in questo caso, essendo diventato l'array
b[4,7,9]
e si ha non verificata la disequazione if(9<9) falso, allora si ha lo stop del programma.
Risultato e'la stampa:
4,7,9