python - 递归函数未在其内部定义

标签 python recursion nameerror

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

最佳答案

FindPositionTheQueensAlgoritm 类的一个方法,它本身并不存在。您需要使用:

self.FindPosition(finalArray, startArray)

关于python - 递归函数未在其内部定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621623/

相关文章:

recursion - 如何实现惰性 "reducing map"函数?

javascript - 递归展平一组数组的算法

ruby: irb 给出 NameError attempt to use mechanize gem (ubuntu)

python - 服务器和客户端可以在不同平台上编程吗?

java - Ctrl+方向键,多字变量名和eclipse pydev

python - Pandas Dataframe 根据具有相等值的两列删除行

Java:递归地找出一个数字是否为质数

python-3.x - 如何解决GET参数中的API key 错误?

Python 名称错误 : name 'self' is not defined Why?

python - Python 3项目结构的最佳实践