递归函数本身没有定义

Recursive function is not defined inside itself

我正在尝试编写一个程序来解决 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)

FindPosition 是 class TheQueensAlgoritm 的一种方法,它本身并不存在。您需要使用:

self.FindPosition(finalArray, startArray)