Вы думаете, что мы хотим вызвать эту функцию по номеру 3
когда вы используете --num его так же, как вы меняете введенный номер в функции natural_function, так что
локальный стек при вызове natural_numbers (3) выглядит как
// =========call natural_number(3)
natural_number(2) // --num (change num itself. its like num = num - 1 then pass it)
// But here in this local stack block "num" becomes 2
print 2 // <== here it prints 2 on the backward step
// ========= call natural_number(2)
natural_number(1) // --num (change num itself. its like num = num - 1 then pass it)
// But here in this local stack block "num" becomes 1
print 1 // <== Here it prints 1 on the backward step
// ========= call natural_number(1)
print 1 // Here we go out of stack by printing 1
Result: 1 1 2
Теперь, если бы мы вызвали эту функцию с помощью (num - 1)
это означает, что вы не хотите изменять переменную «num», входящую в собственный блок локального стека.
Локальный стек для (num - 1) будет выглядеть так:
// ========= call natural_number(3)
natural_number(2) // (num - 1) (num wont change. its like temp = num - 1 then pass temp to it)
print 3 // Here it prints 3 on the backward step
// ========= call natural_number(2)
natural_number(1) // (num - 1) (num wont change. its like temp = num - 1 then pass temp to it)
print 2 // <== Here it prints 2 on the backward step
// ========= call natural_number(1)
print 1 // Here we go out of stack by returning 1
Result: 1 2 3