한 노 타, 귀속 과 python 실현
세 개의 기둥 A, B, C 중의 A 기둥 에 몇 개의 원반 이 놓 여 있 는데 그 중에서 아래 의 원반 은 위의 원반 보다 크다. 이 규칙 은 세 개의 기둥 이 모두 지 켜 야 한다. 목적 은 세 개의 기둥 을 빌려 몇 개의 원반 을 모두 A 기둥 에서 C 기둥 으로 옮 겨 그 중의 절 차 를 구 하 는 것 이다.
한 노 타 와 귀환
한 노 타 문 제 는 전형 적 인 재 귀 문제 이다.간단 한 귀속 이 해 는 하나의 방법 에서 그것 자 체 를 호출 하 는 것 이다.더 나 아가 한 문 제 를 더 간단 한 문제 로 지속 적 으로 분해 하여 문 제 를 해결 할 수 있 을 때 까지 하 는 것 이다. 물론 핵심 은 그 자체 로 해결 하 는 것 이다.
한 노 타 사상
A 기둥 의 원반 을 C 기둥 으로 옮 기 는 절 차 는 결국 세 개 에 불과 하 다.
4. 567917. A 기둥 의 마지막 을 제외 한 모든 원반 을 B 기둥 으로 옮 깁 니 다
4. 567917. A 기둥 에 남 은 원반 을 C 기둥 으로 옮 겨 라
4. 567917. 남 은 B 기둥 의 모든 원반 콩 을 C 기둥 으로 옮 깁 니 다
python 구현
count = 0 #
def hanoi(a, b, c, num):
"""
:param a: A
:param b: B
:param c: C
:param num:
:return:
"""
global count
if num == 1: # , "A" "C" ( )
count += 1
print a + "->" + c
return
num -= 1
hanoi(a, c, b, num) # : A B 。
count += 1
print a + "->" + c # : A C 。
hanoi(b, a, c, num) # : B C 。
if __name__ == '__main__':
hanoi("A", "B", "C", 3)
print count
결과 되 돌리 기:
A->C
A->B
C->B
A->C
B->A
B->C
A->C
7
읽 어 주 셔 서 감사합니다!만약 문장 에 잘못 이 있 거나 오해 가 있 는 부분 이 있다 면, 번 거 로 우 시 겠 지만, 더 많은 가르침 을 주 셔 서 대단히 감사합니다!The End.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.