Python 递归计数器
用Python 的八皇后改造一个计数器,每次生成一个num 个元素的元组。解八皇后的前提是先理解这个计数器。这个计数器加上限制条件,就可以组成八皇后的解法或组合成各种解法。
上代码:
import datetime
def queens(num,state=()): #用八皇后的递归函数定义
for pos in range(num):
if len(state)==num-1:
yield (pos,)
else:
for result in queens(num,state+(pos,)):
yield (pos,)+result
a=datetime.datetime.now() #开始的时间
for i in queens(6):
print(i)
b=datetime.datetime.now() #结束递归时间
print(b-a) #计算一下用时多长
计算6位的结果片段如下:
(5, 5, 5, 5, 4, 5)
(5, 5, 5, 5, 5, 0)
(5, 5, 5, 5, 5, 1)
(5, 5, 5, 5, 5, 2)
(5, 5, 5, 5, 5, 3)
(5, 5, 5, 5, 5, 4)
(5, 5, 5, 5, 5, 5)
0:00:02.965189