#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