Как добавить счетчик в этот код для отображения количества шагов?

#python #recursion #counter #towers-of-hanoi

#python #рекурсия #счетчик #ханойские башни

Вопрос:

 def toh(N, fromm=1, to=3, aux=2):
    # Your code here

    if N == 1:
        print('move disk', N, 'from rod', fromm, 'to rod', to)
        return
    else:
        toh(N - 1, fromm, aux, to)
        print('move disk', N, 'from rod', fromm, 'to rod', to)
        toh(N - 1, aux, to, fromm)



#Driver code Starts

import math
def main():
    T = int(input())
    while(T > 0):
        N = int(input())
        print(toh(N, 1, 3, 2))

        T -= 1

if __name__ == "__main__":
    main()

#Driver code Ends
  

Помните, не меняйте код драйвера

тестовые примеры следующие:

N = 2
ожидаемый результат:
переместите диск 1 со стержня 1 на стержень 2
переместите диск 2 со стержня 1 на стержень 3
переместите диск 1 со стержня 2 на стержень 3
3

здесь 3 — это «общее количество предпринятых шагов», которое я хочу добавить в этот код

 My output:                  
For Input:2
                  
move disk 1 from rod 1 to rod 2             
move disk 2 from rod 1 to rod 3                 
move disk 1 from rod 2 to rod 3               
None
  

Комментарии:

1. Что значит добавить в этот код ? Кстати, что это делает? Вы должны объяснить, чего вы пытаетесь достичь

2. мой код печатает только первые 3 строки вывода для тестового примера 2, но вместо 3 в 4-й строке он показывает none

3. Заставьте функцию возвращать количество ходов.

4. я не могу найти лучшего решения, что бы я ни делал для добавления счетчика, это портит мой вывод

Ответ №1:

Наконец я сделал это

 def toh(N, fromm=1, to=3, aux=2, count=0):
    # Your code here

    if N == 1:
        print('move disk', N, 'from rod', fromm, 'to rod', to)
        return count   1
    else:
        toh(N - 1, fromm, aux, to)
        print('move disk', N, 'from rod', fromm, 'to rod', to)
        toh(N - 1, aux, to, fromm)
        return count   (2**N-1)

        

# Driver code Starts

import math
def main():
    T = int(input())
    while(T > 0):
        N = int(input())
        print(toh(N, 1, 3, 2))

        T -= 1

if __name__ == "__main__":
    main()

# Driver code Ends