Member 13660234 Ответов: 0

Эй, я нашел фрагмент кода о башнях Ханоя.


Код для Ханойской башни рекурсивно сделан из любопытства, мне просто интересно, как он точно работает.

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

Комментарии говорят вам, что он делает.

0 Ответов