Помогите пожалуйста, сижу целый день и не понимаю, как работает функция..
Вот код:
def move(n, start, finish) :
if n==1:
print(n, start, finish)
else:
tmp= 6 - start - finish
move(n - 1, start, tmp)
print(n, start, finish)
move(n - 1, tmp, finish)
n=int(input())
move(n, 1, 3)
Что не понятно: как программа понимает код, и копирует кольца
n-1
, тоесть если я например напишу 6 колец, то он скопирует 5 во временную переменную tmp.. Где это указано в коде каким образом. Это, что метод присваивания аргументов так выглядит после else..?
И ещё я не понимаю, откуда программа понимает, что большее кольцо нельзя поместить на меньшее? Тоесть как он понимает, это же в коде не указано, что 2 нельзя положить на 1?