2016-06-03 6 views
1

N Queens Puzzle을 해결하기위한 프로그램을 작성하려고합니다. 코드가 FindPosition(finalArray, startArray)을 재귀 적으로 호출하려고하면 name 'FindPosition' is not defined 오류가 발생합니다. 어떻게 제대로 함수를 호출합니까?자체 내부에 재귀 함수가 정의되어 있지 않습니다.

class TheQueensAlgoritm(): 

    def FindPosition(finalArray, startArray): 

     if len(startArray)==0: 
      print(finalArray) 
      return 
     else: 
      startIndex = 0 

      while startIndex <= len(startArray): 
       finalIndex = len(finalArray) - 1 

       while finalIndex >= 0:               
        if (not(startArray[startIndex] == finalArray[finalIndex] - finalIndex + startIndex) and not(startArray[startIndex] == finalArray[finalIndex] + finalIndex - startIndex)): 
         finalIndex = finalIndex - 1      
        else: 
         break 
        finalArray.append(startArray[startIndex]) 
        startArray.remove(finalArray[-1]) 
        FindPosition(finalArray, startArray) 
       startIndex = startIndex + 1 

      startArray.append(finalArray[-1]) 
      finalArray.remove(startArray[-1]) 
      FindPosition(finalArray, startArray)   

    startArray = [] 
    finalArray = [] 
    boardSize = input("Type the size of the board = ") 
    boardSize = int(boardSize) 

    for i in range (0, boardSize): 
     startArray.append(i) 

    finalArray.append(startArray[random.randint(0,boardSize-1)]) 
    startArray.remove(finalArray[0])        
    FindPosition(finalArray, startArray) 
+6

왜 수업을 들었습니까? – user2357112

+0

잘 모르겠지만 삭제하면 문제가 해결됩니다. 감사합니다 – Paier

답변

1

FindPosition 클래스 TheQueensAlgoritm하는 방법이며, 그 자체로 존재하지 않는다. 다음을 사용해야합니다.

self.FindPosition(finalArray, startArray) 
+1

자기 매개 변수도 누락되었습니다, 안돼? 그렇지 않으면, 자기 예, 기능 데프가'해야 데프 FindPosition –

+1

을 정의되지 않는다 (자기, finalArray, startArray) :' – heinst

+2

이름이'self' 그냥 컨벤션입니다 cricket_007 참고 @. OP 코드에서'finalArray'는 실제로'self'로 사용되며 메소드에는'startArray'라는 하나의 명시 적 매개 변수 만 있으므로 두 개의 매개 변수로 호출하면 오류가 발생합니다. – Bakuriu