我正在尝试编写一个程序来解决 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
是 TheQueensAlgoritm
类的一个方法,它本身并不存在。您需要使用:
self.FindPosition(finalArray, startArray)
关于python - 递归函数未在其内部定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621623/