Вы вызываете функцию
roundNumb(s, 12) // where numb[pos] = 9
тогда функция переходит в блок else
и выполнить, если блок
if int(numb[pos]) == 9:
это интересная часть до этого, если при выполнении блока вы вызываете эту функцию снова
ret = roundNumb(numb , pos - 1) // and herer is function execution pause
print("int(numb[pos]) == 9 ", int(numb[pos]), " ",ret)
и затем functoin выполняется, если блок вашей функции
if int(numb[pos]) < 5:
ret = numb[:pos]
print("if int(numb[pos]) < 5: ", int(numb[pos]), " ", ret)
затем выполните эту функцию печати и затем эта приостановленная функция возобновится
и затем выполните эту функцию печати
print("int(numb[pos]) == 9 ", int(numb[pos]), " ",ret)
знание о рекурсии очень полезно, чтобы понять это