Эй, я нашел фрагмент кода о башнях Ханоя.
Код для Ханойской башни рекурсивно сделан из любопытства, мне просто интересно, как он точно работает.
def hanoi(n, source, helper, target): print ("hanoi( ", n, source, helper, target, " called") if n > 0: #move tower of size n - 1 to helper: hanoi(n - 1, source, target, helper) #move disk from source peg to target peg if source[0]: disk = source[0].pop() print( "moving " + str(disk) + " from " + source[1] + " to " + target[1]) target[0].append(disk) # move tower of size n-1 from helper to target hanoi(n - 1, helper, source, target) #This Line is interesting for me source = ([4, 3, 2, 1], "source") target = ([], "target") helper = ([], "helper") hanoi(len(source[0]), source, helper, target) print (source, helper, target)
Что конкретно: работает ли он одновременно с несколькими рекурсиями одновременно? то есть сначала один Ханой(n - 1, Источник, цель, помощник), пока он не достигнет конца n== 0.
Или же он принимает во внимание второй вариант(n - 1, помощник, источник, цель),
и о том, что н принимает ли он это во внимание. А также как код меняется от источника к цели и помощнику, и как они взаимодействуют друг с другом, например: почему иногда он переходит от источника к цели, а в другое время-от помощника к цели?
Что я уже пробовал:
Я склонен думать, что форма обоих hanois n была независимой, а также что она автоматически меняется от источника к помощнику и цели.
Richard MacCutchan
Комментарии говорят вам, что он делает.