首先,在递归函数之外定义一个全局变量:isGo,布尔型,初始值为真,意思是可以继续循环。
接着,在递归循环的一开始就设置判断机制,一旦isGo的值为假,就层层阻止,直到退出所有层的循环,从而达到强制退出递归的目的。
1
2
3
|
if (isGo = = false){ return } |
最后,在递归的“满足条件”代码中增加如下语句:
1
|
isGo = false; |
下面给出修改后的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
var isGo:Boolean = true functionarr_all(pre:Array,nex:Array) { if (isGo = = false){ return } var j:uint = nex.length; if (j = = 1 ) { var t = []; for (var i:uint = 0 ;i<pre.length; i + + ) { t.push(pre[i]); } t.push(nex[ 0 ]); isGo = false; returninfo.appendText( "\n" + pc(t)); / / ..out........ } for (var k:uint = 0 ; k<j; k + + ) { var p:Array = pre. slice (); var s:Array = nex. slice (); p.push(s.splice(k, 1 )); arr_all(p,s); } } |
问题补充:
python停止函数中的递归
我有一个函数,它的工作方式类似于树遍历,但它会遍历字典。dict中的每个键在列表中都有两个项,因此结构类似于二叉树。我试图找到一个特定的键,同时从一个给定的键开始,当我找到键时,我想停止我的功能并返回我所处的深度。我在dict中搜索find the key,但递归函数不会在return语句处停止。 我的职能:
1
2
3
4
5
6
|
def count( dict , key, depth): if key is not None : if key = = 42 : return depth return count( map , map [key][ 0 ], depth + 1 ) return count( map , map [key][ 1 ], depth + 1 ) |
到此这篇关于python如何停止递归的文章就介绍到这了,更多相关python停止递归的方法内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.py.cn/jishu/jichu/15198.html