![]() |
1
4
检查
更新
|
![]() |
2
4
让我们尝试手动生成一个解决方案,因为考虑这种递归算法是很有教育意义的。(当然,在现实世界中只使用现有的库是合适的;它的容错性可能要高得多。)
每个 路径来自 每个 当然,当我们编写递归代码时,我们喜欢避免副作用,因为它们使我们更难推理。所以让我们说:所有路径的累加,定义为(从节点到后续节点的链接)+(从后续节点到结束的路径),对于每个后续节点,对于该后续节点的每个pat。当然,我们表示“从节点到后续节点的链接”的方式只是当前节点名和一个箭头;我们从递归中获得路径的其余部分,包括后继节点的名称。
然后我们需要一个基本情况:如果没有后继者,那么我们就只有一条从这里到终点的路径(因为我们在终点),这就是节点名本身。如果图中的死胡同用空集表示,对我们的代码来说会更简单;但是显然更容易
让我们试试:
或者,可以使用生成器表达式而不是列表理解,甚至可以将其编写为递归生成器(使用
(如果我们觉得不够厚颜无耻,我们可以使用条件表达式继续函数式编程主题:)
|
![]() |
Cam · Pandas列表日期到日期时间 8 月前 |
![]() |
Bijan · Pandas批量更新帐户字符串 8 月前 |
![]() |
Kernel · 进入熊猫的定义。系列super().reindex 9 月前 |
|
adventurous_chip_55 · 如何引爆柱子 9 月前 |
![]() |
RKIDEV · Panda迭代行并将第n行值乘以下一(n+1)行值 9 月前 |