Подумай, как дебагер:
передаем у функцию n=5 проверяем, вляется ли оно 0 - нет, значит умножаем n на factorial(5-1) = 5*4*3*2*1
передаем у функцию n=4 проверяем, вляется ли оно 0 - нет, значит умножаем n на factorial(4-1) = 4*3*2*1
передаем у функцию n=3 проверяем, вляется ли оно 0 - нет, значит умножаем n на factorial(3-1) = 3*2*1
передаем у функцию n=2 проверяем, вляется ли оно 0 - нет, значит умножаем n на factorial(2-1) = 2*1
передаем у функцию n=1 проверяем, вляется ли оно 0 - нет, значит умножаем n на factorial(1-1) = 1*1
передаем у функцию n=0 проверяем, вляется ли оно 0 - да, возвращаем 1