여기에 있어서는 안되는 재귀 프로그램에서 무한 루프가 발생합니다. 내 프로그램은 Sierpinski 삼각형 (http://en.wikipedia.org/wiki/Sierpinski_triangle)을 그려야합니다. 여기 내 코드 :재귀 프로그램의 무한 루프
from Python32_Lja import*
init_window("Triangle de Sierpienski",600,600)
current_color(0,0,0)
A=[100,475]#A=[x1,y1]
B=[500,475]#B=[x2,y2]
C=[300,125]#C=[x3,y3]
def Sierpienski(A,B,C,n):
if n==0:#On trace le triangle
line(A[0],A[1],B[0],B[1])#AB
line(B[0],B[1],C[0],C[1])#BC
line(C[0],C[1],A[0],A[1])#CA
else:
MAB=[int((A[0]+B[0])/2),int((A[1]+B[1])/2)]#Milieu de AB
MBC=[int((B[0]+C[0])/2),int((B[1]+C[1])/2)]#Milieu de BC
MCA=[int((C[0]+A[0])/2),int((C[1]+A[1])/2)]#Milieu de CA
line(MAB[0],MAB[1],MBC[0],MBC[1])
line(MBC[0],MBC[1],MCA[0],MCA[1])
line(MCA[0],MCA[1],MAB[0],MAB[1])
A=MAB
B=MBC
C=MCA
return(Sierpienski(A,B,C,n-1))
n=int(input("Entrez le nombre de profondeur : "))
Sierpienski(A,B,C,n)
main_loop()
일부 조건이 있으므로 숙제가 있습니다. 알고리즘은 재귀 적이어야하며 Python32_Lja 라이브러리 (Tkinter를 단순화)를 사용해야합니다. 함수가 "n-1"을 반환하기 때문에 무한 루프가 발생하는 이유는 모르겠다.
당신이 그것을 디버깅 적이 : 당신이
n==0
에 도달하면 재귀에서 각각의 깊이 계층에서 각 삼각형의 각 가장자리를 그리기하고, 탈출 시도? 에서와 같이 그것이 틀린 이유를 알아 내려고 노력했습니다. 당신이한다면 무한 루프가 의미가 있음을 알 수 있습니다. – keyser