python 化学模块_Python chemif包_程序模块 - PyPI - Python中文网

实施

解决这个问题的方法是使用一个while循环的递归下降算法。这个循环的基本结构是:todo = [[item1, processing_data],[item2, processing_data], ... ]

done = []

while len(todo)>0:

item_to_workon = todo.pop()

for each_branch in branches:

stuff.do()

data.process()

if end_condition.met()

done.append(processing_data)

else

todo.append([stuff, processing_data])

return done

也就是说,从todo列表中弹出一个项目,处理该节点,并将结果节点放回todo列表(除非满足结束条件,否则在这种情况下结束)。然后在todo列表为空时返回done列表。

因此,它从第一个字母开始,尝试一个或两个元素组合,如果成功找到匹配项,则将项(剩余字符)与处理数据的一起放回todo列表,即元素列表。如果它在单词的其余部分用尽了可能的路径,而你还没有到达单词的结尾,那就意味着你不能用给定的元素拼写它。

我希望您会同意,这个实现比使用递归更干净、更容易理解。它的计算强度也较低,因为不需要在每个节点(即每个函数调用)重新定义一个具有自己作用域的新变量空间,从而使用较少的资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值