递归函数

js递归遍历树结构(tree)

匿名 (未验证) 提交于 2019-12-03 00:14:01
如图: 代码: var treeList = []; //树结构数据 function forTree(treeList) { //遍历树函数 for (var i in treeList) { //循环遍历树 if (treeList[i].children) { //如果遍历树结构还有下一级-做操作 } else { //如果没有下一级做相应操作 return; } } } 来源:博客园 作者: 李广宁博客 链接:https://www.cnblogs.com/lgnblog/p/11652023.html

函数进阶之迭代器,递归

匿名 (未验证) 提交于 2019-12-03 00:03:02
可迭代的对象:具有iter方法的对象,可迭代对象不一定是迭代器对象 迭代器对象:具有iter和next方法的对象,迭代器对象一定是可迭代对象,迭代器对象加上iter方法还是迭代器本身 for 循环原理 for i in lt: 把lt变成迭代器对象 然后迭代使用next方法获取每一个元素 捕捉异常中断while循环 print(1) if i > 10 else print(2) {k:v for k,v in dic.items()} (i for i in rang(10)) #不去使用next取值,是没有值的 自定制的迭代器 def func(): yield: 1.展厅函数,遇到下一个yield继续运行函数代码 2.具有返回值 3.让函数()变成生成器对象 return: 1.终止函数 2.返回值 没有名字的函数 lambda参数:代码块 一般不单独使用,与max/min/map/filter/sorted联用 函数调用函数本身,但是必须得有结束条件 内置函数的直接用的,属于Python解释器的 数据类型的内置函数只有数据类型本身才能使用 enumerate() 流水线 优点:思路清晰 缺点:可扩展性差;功能与功能直接不独立;调试麻烦 来源:博客园 作者: 十七zz 链接:https://www.cnblogs.com/shiqizz/p/11515030.html

无限类递归函数

匿名 (未验证) 提交于 2019-12-02 23:56:01
res=[] def get_son(data,parent_id=0,level=0,is_clear=True): if is_clear==True: res.clear() for item in data: if parent_id==item['parent_id']: item['level']=level res.append(item) get_son(data,parent_id=item['category_id'],level=level+1,is_clear=False) return res all_son_list=[] def get_son_list(data,p_id,is_clear=True): if is_clear: all_son_list.clear() if p_id != 0: all_son_list.append(p_id) for item in data: if item['parent_id']==p_id: all_son_list.append(item['cat_id']) get_son_list(data,p_id=item['cat_id'],is_clear=False) return all_son_list 来源:博客园 作者: Zz_happy 链接:https://www.cnblogs.com

递归与分治

匿名 (未验证) 提交于 2019-12-02 23:52:01
递归 :思路简单但效率低(建立函数的副本,消耗大量时间和内存)。能用迭代就不用递归。 递推公式+递推终止条件 Fibonacci数列 # 递归 class Solution: def fib(self, N: int) -> int: if N <= 1: return N return self.fib(N-1) + self.fib(N-2) # 迭代 class Solution: def fib(self, N: int) -> int: if N <= 1: return N tmp1 = 0 tmp2 = 1 for i in range(2, N+1): res = tmp1 + tmp2 tmp1 = tmp2 tmp2 = res return res 函数调用自身,注意递归的停止条件。分为调用和回溯两个阶段。 任意长度的字符串反向,递归实现 # 需要额外存储空间 def reverseStr(string): if string == None or len(string) == 0: return None if len(string) == 1: return string return reverseStr(string[1:])+string[0] #leetcode,O(1)额外空间,原地修改。双指针 class Solution: def

leetcode--306:(递归) Additive Number

匿名 (未验证) 提交于 2019-12-02 23:47:01
leetcode_2: #306(未解决)很沮丧,今天这个问题没能解决出来,部分网友说回溯法能做,这个高级的算法还没学,之后补充 题目:累加数   Additive number is a string whose digits can form additive sequence. '0'-'9' , write a function to determine if it's an additive number. 1, 2, 03 1, 02, 3 今天学的是 https://blog.csdn.net/weixin_37373020/article/details/80567919 def junge(a,b,s):   c=a+b   temp=str(a)+str(b)+str(c)   if s==temp:     return True   elif len(s)<len(temp):     return False   if s[:len(temp)]==temp:     return junge(b,c,s[len(str(a)):])   else:     return False for i in range(1,len(num)//2+1):   a=int(num[:i])   j=1   while j+i<(len(num)+i)//2+1:

飞机大战 (递归版)

匿名 (未验证) 提交于 2019-12-02 23:40:02
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; public class Fight extends JPanel { public static final int H= 1000; public static final int W=(int)(1.618*H); public static BufferedImage beeImg; public static BufferedImage devilImg; public static BufferedImage bossImg; public static BufferedImage bulletImg; public static BufferedImage hero0Img; public

Python基础-12

匿名 (未验证) 提交于 2019-12-02 22:54:36
day11回顾: 变量 局部变量 全局变量 globals() / locals() 用来获取全局变量和局部变量的字典 函数名是变量 def xxx(....): pass 一个函数可以作为实参传入另一个函数 def fx(fn, L): pass fx(max, [1,2,3]) 函数可以作为另一个函数的返回值 def fx(): def hello(): print("hello world") return hello fh = fx() fh() # 调用hello这个函数 python 的四个作用域: L E G B 局部 外部嵌套函数作用域 全局 内建作用域 global 语句 nonlocal 语句 day12笔记: lambda 表达式(又名匿名函数表达式) 作用: 创建一个匿名函数对象 同def类似,但不提供函数名 语法: lambda [形参1, 形参2, ...] : 表达式 示例: def myadd(x, y): return x + y 可以改写为: myadd = lambda x, y: x + y print(myadd(100, 200)) print(myadd("ABC", "100")) 语法说明: 1. lambda 只是一个表达式,它用来创建一个函数对象 2. 当lambda表达式调用时,先执行冒号后的表达式,并返回表达式的结果的引用

Python之汉诺塔递归运算

匿名 (未验证) 提交于 2019-12-02 22:51:30
  汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?   使用python递归函数可以实现   move.py def move(n, a, b, c): if n == 1: print(a, '-->', c) else: move(n-1, a, c, b) #把n-1个盘子从 a 移动到 b move(1, a, b ,c)#把1个盘子从 a 移动到 c move(n-1, b, a, c)#把n-1个盘子从 b 移动到 c #一直循环到n==1 move(3, 'A', 'B', 'C')   实现过程,如果只有一个盘则只需要把盘从a移动到c即可,如果有多个呢   第三步:把已经移动到b的n-1个盘移动到c 完成整个移动过程   下面以n=2为例演示移动过程   n=3时流程图

php递归函数实现无限级树型菜单

瘦欲@ 提交于 2019-12-02 21:19:03
!!写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助. 大概步骤如下: 首先到数据库取数据,放到一个数组, 然后把数据转化为一个树型状的数组, 最后把这个树型状的数组转为html代码。 也可以将第二步和第三步合为一步。 详细如下: 1。数据库设计: 脚本如下: CREATE TABLE `bg_cate` ( `cate_Id` int(30) unsigned NOT NULL AUTO_INCREMENT, `cate_ParentId` int(30) unsigned DEFAULT '0', `cate_Name` varchar(100) NOT NULL, `cate_Intro` varchar(500) DEFAULT NULL, `cate_Order` int(30) unsigned DEFAULT '0', `cate_Icon` varchar(100) DEFAULT NULL, PRIMARY KEY (`cate_Id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ; -- -- 导出表中的数据 `bg_cate` -- INSERT INTO `bg_cate` (`cate_Id`, `cate_ParentId`, `cate_Name`,

LeetCode解题汇总目录

a 夏天 提交于 2019-12-02 17:37:52
此篇为学习完 《数据结构与算法之美》 后,在 LeetCode 刷题的汇总目录,方便大家查找(Ctrl+F ind ),一起刷题,一起PK交流!Updated on 2019.12.2 刷题可以按照 不同的专题 进行,便于加强某个知识点的理解。 我的 LeetCode 主页 我的 GitHub 主页 已解决 519/1185 - 简单 281 中等 208 困难 30 2019.7.24 - 2019.11.9,108天做了400道题 2019.11.9 - 2019.11.24, AC+100道,4个月共计500道题 参赛记录 LeetCode 2019 力扣杯全国秋季编程大赛 ​ 已解题目,部分太简单的没有列出 LeetCode 1. 两数之和(哈希) LeetCode 2. 两数相加(单链表反转) LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希) LeetCode 4. 寻找两个有序数组的中位数(二分查找,难) LeetCode 7. 整数反转 LeetCode 8. 字符串转换整数 (atoi) LeetCode 9. 回文数 LeetCode 11. 盛最多水的容器(双指针) LeetCode 14. 最长公共前缀 LeetCode 15. 三数之和 LeetCode 16. 最接近的三数之和(固定左端+滑动窗口) LeetCode 17.