Qeu tal Arlex,
Efectivamente el primer ejemplo que muestras no presentara ningun problema ya que ahi el nivel de stack simepre sera 1, esto porque llamas una subrutina, en ese momento cargas el primer nivel de stack, pero dentro de esa subrutina ya no llamas otras, por lo tanto solo el primer nivel de stack es usado. Una vez que terminas la subrutina, regresas, por elo tanto el nivel de stack nuevamente se limpia, entonces vuelves a llamar otra subrutina, pero el nivel de stack esta limpi, asi que el estack nuevamente vuelve a ser 1.
En el caso 2 no, ahi es donde se aplica los niveles de stack, el porque es simple. Porque llamas una subrutina dentro de otra subrutina, esto es:
Llamas a limpiar en ese momento el stack vale 1, entonces dentro de esa subrutina llamas a otra subrutina, por lo tanto el stack vale 2 y asi sucesivamente.
Espero haberte ayudado.
Saludos.
Elreypic.