python如何停止递归
首先,在递归函数之外定义一个全局变量:isGo,布尔型,初始值为真,意思是可以继续循环。
接着,在递归循环的一开始就设置判断机制,一旦isGo的值为假,就层层阻止,直到退出所有层的循环,从而达到强制退出递归的目的。
if(isGo==false){ return }
最后,在递归的“满足条件”代码中增加如下语句:
isGo =false;
下面给出修改后的代码:
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语句处停止。 我的职能:
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停止递归的方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Python实现一个简单的递归下降分析器
问题 你想根据一组语法规则解析文本并执行命令,或者构造一个代表输入的抽象语法树. 如果语法非常简单,你可以不去使用一些框架,而是自己写这个解析器. 解决方案 在这个问题中,我们集中讨论根据特殊语法去解析文本的问题. 为了这样做,你首先要以BNF或者EBNF形式指定一个标准语法. 比如,一个简单数学表达式语法可能像下面这样: expr ::= expr + term | expr - term | term term ::= term * factor | te
-
python实现文法左递归的消除方法
前言 继词法分析后,又来到语法分析范畴.完成语法分析需要解决几个子问题,今天就完成文法左递归的消除. 没借鉴任何博客,完全自己造轮子. 开始之前 文法左递归消除程序的核心是对字符串的处理,输入的产生式作为字符串,对它的拆分.替换与合并操作贯穿始终,处理过程的逻辑和思路稍有错漏便会漏洞百出. 采用直接改写法,不理解左递归消除方法很难读懂代码. 要求 CFG文法判断 左递归的类型 消除直接左递归和间接左递归 界面 源码 import os import tkinter as tk import tk
-
python 使用递归的方式实现语义图片分割功能
实现效果 第一张图为原图,其余的图为分割后的图形 代码实现: # -*-coding:utf-8-*- import numpy as np import cv2 #---------------------------------------------------------------------- def obj_clip(img, foreground, border): result = [] height ,width = np.shape(img) visited = set()
-
Python函数递归调用实现原理实例解析
函数的递归调用: 是函数嵌套调用的一种特殊形式 具体是指: 在调用一个函数的过程中又直接或间接地调用到了本身 # 直接调用本身 def func(): print('我是func') func() func() # 函数会不断的运行永远不会结束,但Python不允许这种情况,会默认限制只能调1000次. # 间接调用本身 def f1(): print('我是f1') f2() def f2(): print('我是f1') f1() f1() # 此时也相当于直接调用本身,f1-->f2-->
-
python利用递归方法实现求集合的幂集
什么是集合的幂集? 就是原集合中所有的子集(bai包括全集du和空集)构成的集族.可数集是zhi最小的无限集: 它的幂集和实数dao集一一对应(也称同势),是不可数集. 不是所有不可数集都和实数集等势,集合的势可以无限的大.如实数集的幂集也是不可数集,但它的势比实数集大. 设X是一个有限集,|X| = k,则X的幂集的势为2的k次方. 代码 def powSet(S): #创建列表a存储S中的元素 a=[] for i in S: a.append(i) #判断S中是否只有一个元素,作为递归的终
-
Python装饰器结合递归原理解析
代码如下: import functools def memoize(fn): print('start memoize') known = dict() @functools.wraps(fn) def memoizer(*args): if args not in known: print('memorize %s'%args) # known[args] = fn(*args) for k in known.keys(): print('%s : %s'%(k, known[k]), en
-
python如何停止递归
首先,在递归函数之外定义一个全局变量:isGo,布尔型,初始值为真,意思是可以继续循环. 接着,在递归循环的一开始就设置判断机制,一旦isGo的值为假,就层层阻止,直到退出所有层的循环,从而达到强制退出递归的目的. if(isGo==false){ return } 最后,在递归的"满足条件"代码中增加如下语句: isGo =false; 下面给出修改后的代码: var isGo:Boolean=true functionarr_all(pre:Array,nex:Array) { i
-
python基于右递归解决八皇后问题的方法
本文实例讲述了python基于右递归解决八皇后问题的方法.分享给大家供大家参考.具体分析如下: 凡是线性回溯都可以归结为右递归的形式,也即是二叉树,因此对于只要求一个解的问题,采用右递归实现的程序要比回溯法要优美的多. def Test(queen,n): '''这个就不用说了吧,就是检验第n(下标,0-7)行皇后的位置是否合理''' q=queen[n] for i in xrange(n): if queen[i]==q or queen[i]-q==n-i or queen[i]-q==i
-
Python实现的递归神经网络简单示例
本文实例讲述了Python实现的递归神经网络.分享给大家供大家参考,具体如下: # Recurrent Neural Networks import copy, numpy as np np.random.seed(0) # compute sigmoid nonlinearity def sigmoid(x): output = 1/(1+np.exp(-x)) return output # convert output of sigmoid function to its derivati
-
分析python动态规划的递归、非递归实现
概要 本文只是简单的介绍动态规划递归.非递归算法实现 案例一 题目一:求数组非相邻最大和 [题目描述] 在一个数组arr中,找出一组不相邻的数字,使得最后的和最大. [示例输入] arr=1 2 4 1 7 8 3 [示例输出] 15 from functools import wraps def memoDeco(func): ''' memoDeco主要是缓存已遍历的节点,减少递归内存开销 ''' cashe={} @wraps(func) def wrapper(*args): if ar
-
使用 Python 实现文件递归遍历的三种方式
今天有个脚本需要遍历获取某指定文件夹下面的所有文件,我记得很早前也实现过文件遍历和目录遍历的功能,于是找来看一看,嘿,不看不知道,看了吓一跳,原来之前我竟然用了这么搓的实现. 先发出来看看: def getallfiles(dir): """遍历获取指定文件夹下面所有文件""" if os.path.isdir(dir): filelist = os.listdir(dir) for ret in filelist: filename = dir
-
基于Python数据结构之递归与回溯搜索
目录 1. 递归函数与回溯深搜的基础知识 2. 求子集 (LeetCode 78) 3. 求子集2 (LeetCode 90) 4. 组合数之和(LeetCode 39,40) 5. 生成括号(LeetCode 22) 6. N皇后(LeetCode 51,52) 7. 火柴棍摆正方形(LeetCode 473) 1. 递归函数与回溯深搜的基础知识 递归是指在函数内部调用自身本身的方法.能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解
-
python 如何停止一个死循环的线程
进程想要执行任务就需要依赖线程.换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程. 那什么是多线程?提到多线程这里要说两个概念,就是串行和并行,搞清楚这个,我们才能更好地理解多线程. 所谓串行,其实是相对于单条线程来执行多个任务来说的,我们就拿下载文件来举个例子:当我们下载多个文件时,在串行中它是按照一定的顺序去进行下载的,也就是说,必须等下载完A之后才能开始下载B,它们在时间上是不可能发生重叠的. 并行:下载多个文件,开启多条线程,多个文件同时进行下载,这里是严格意义上
-
10张动图学会python循环与递归问题
图像(包括动图)是传递信息的一种高效方式,往往能增强表象.记忆与思维等方面的反应强度.所谓一图胜千言,说的就是这个道理. 今天为大家整理了十张动图GIFS,有助于认识循环.递归.二分检索等概念的具体运行情况.代码实例以Python语言编写. 一.循环 GIF1:最简单的 while 循环 GIF 2:带 if/else 的循环 二.递归 GIF 3:递归概念的直接演示 GIF 4:递归斐波拉切代码示例 GIF5: 帕斯卡pascals-triangle三角递归动画代码. GIF6:带代码和动画的
-
python如何实现递归转非递归
先说总结,这种方案总的来说就是机械化的强转,时间复杂度和空间复杂度没什么变化,唯二的优点可能是1. 不会爆栈,2. 节省了函数调用的开销 而且最终产出的代码效果不那么美观,比较冗长 思路是:当发生递归调用时,模拟函数调用的 压栈 .并处理 入参 和 返回值 和 记录返回到当前栈的时候该继续从哪里执行 以如下递归( leetcode爬楼梯 )为例 def f(n): if n <= 2: return n return f(n - 1) + f(n - 2) 第一步: 将涉及到递归调用的,单独变成
-
Python数据结构之递归可视化详解
目录 1.学习目标 2.递归的调用 3.递归可视化 3.1 turtle 库简介 3.1 递归绘图 1.学习目标 递归函数是直接调用自己或通过一系列语句间接调用自己的函数.递归在程序设计有着举足轻重的作用,在很多情况下,借助递归可以优雅的解决问题.虽然使用递归可以快速的解决一些难题,但由于递归的抽象性,使递归难以掌握.为了更好的理解递归函数背后的思想,本节主要通过可视化方式来了解递归函数的执行步骤. 通过本节学习,应掌握以下内容: 提高对递归的理解 利用可视化理解递归函数背后的思想 2.递归的调
随机推荐
- Bootstrap fileinput文件上传组件使用详解
- Vue2路由动画效果的实现代码
- 深入理解MVC中的时间js格式化
- 基于jQuery实现淡入淡出效果轮播图
- VPS中使用LNMP安装WordPress教程
- 浅谈Python由__dict__和dir()引发的一些思考
- Android中Activity滑动关闭的效果
- PHP中安装使用mongodb数据库
- ajax后台处理返回json值示例代码
- 页面编码codepage=936和65001的区别
- JS实现给对象动态添加属性的方法
- 判断对象是否Window的实现代码
- 详解jquery easyui之datagrid使用参考
- 深入理解JavaScript 闭包究竟是什么
- IE:如何做到全屏显示
- 用RadioButten或CheckBox实现div的显示与隐藏
- C#实现的鼠标钩子
- php模拟用户自动在qq空间发表文章的方法
- 深入解析C++设计模式编程中解释器模式的运用
- spring定时任务执行两次及tomcat部署缓慢问题的解决方法