递归调用

初识递归

喜欢而已 提交于 2019-12-01 19:57:49
#递归函数 #了解什么是递归: 在函数中调用自身函数 #最大递归深度默认是996/997/998—— 是Python从内部角度出发做得限制 #能够看懂递归 #能知道递归的应用场景 #初识递归 —— #算法——二分查找法 #三级菜单——递归实现 # 如果递归次数太多,就不适合使用递归来解决问题 #递归的缺点:占内存 #递归的优点:会让代码变简单 例如下面一个小例子: # alex 多大 n =1 age(1) = age(2)+2 = age(n+1) +2 #alex比egon大两岁 # egon 多大 n = 2 age(2) = age(3)+2 =age = age(n+1) +2 #egon比wusir大两岁 # wusir 多大 n = 3 age(3) = age(4)+2 age = age(n+1) +2 #wusir比金老板大两岁 # 金老板 多大 n = 4 age(4) = 40 #金老板40了 # n = 4 age(4) = 40 # n < 4 age(n) = age(n+1) + 2 # def age(n): # if n == 4: # return 40 # elif n > 0 and n < 4: # return age(n+1) + 2 # # print(age(1)) #46 来源: https://www.cnblogs.com

Java 递归

醉酒当歌 提交于 2019-12-01 17:30:43
递归: 从形式上看,就是自己调用自己的函数 从内涵上说,他是规律的总结(数学归纳法) 特征:   (1).函数里面的代码中一定调用了函数本身   (2).递归函数很容易引起内存崩溃   (3).递归函数的效率不是太高   (4). 特别好理解,代码简洁 如何写:   (1).要找到递归函数的终结条件   (2).要总结规律   (3).时刻记住你写次函数的目的是什么。 爬虫: 广度优先的算法,深度优先的算法(递归方式的一种体现) 1 //1+2+3+。。。 2 public static int add(int num) { 3 if(num == 1) {return 1;} 4 return add(num-1)+num; 5 } 1 //1*2*3*。。。 2 public static int jc(int num) { 3 if(num == 0) {return 1;} 4 if(num == 1) {return 1;} 5 return jc(num-1)*num; 6 } 1 //费氏数列 兔子 2 public static int tuzi(int n) { 3 if(n == 1) {return 1;} 4 if(n == 2) {return 1;} 5 return tuzi(n-1)+tuzi(n-2); 6 } 1 //打印目录 2 public

递归

試著忘記壹切 提交于 2019-12-01 15:57:13
递归-函数调用自己的行为,默认递归的深度为100层,可更改 import sys sys.setrecursionlimit(1000000) 例普通版求阶乘 1 def recursion(n): 2 result = n 3 for i in range(1,n): 4 result *= i 5 return result 6 7 num = int(input("请输入一个整数: ")) 8 res = recursion(num) 9 print("%d的阶乘是:%d"%(num,res)) 递归版本的求阶乘 1 def recursion(n): 2 if n==1: 3 return 1 4 else: 5 return n*recursion(n-1) 6 7 num = int(input("请输入一个整数:")) 8 res = recurison(num) 9 print("%d的阶乘是:%d"%(num,res)) 递归递归,归去来兮 递归要设置返回条件 来源: https://www.cnblogs.com/dm245/p/11691526.html

spring源码分析6: ApplicationContext的初始化与BeanDefinition的搜集入库

梦想的初衷 提交于 2019-12-01 15:48:45
先前几篇都是概念的讲解:回顾下 BeanDefinition 是物料 Bean是成品 BeanFactory是仓库,存储物料与成品 ApplicationContext初始化搜集物料入库,触发生产线,取出物料生产Bean 本文研究springboot环境下,ApplicationContext的初始化, 多是处理注解形式的Bean. 重要组件 1. PostProcessorRegistrationDelegate : 代理执行post processors的工具类 postProcessor分为两种: BeanFactoryPostProcessor: 发生在BeanDefinition搜集入库阶段 BeanPostProcessor: 发生在BeanDefintion生成Bean阶段 BeanFactoryPostProcessor细分又分为两种: BeanDefinitionRegistryPostProcessor:继承BeanFactoryPostProcessor接口。其postProcessBeanDefinitionRegistry接口方法,具有注册更多Bean的语义。 BeanFactoryPostProcessor:偏向于修改的语义。 2. ConfigurationClass : 这个类要理解, 表示的是配置类

后台开发面经1

白昼怎懂夜的黑 提交于 2019-12-01 15:42:13
1、八大数据结构及分类 1、数组 频繁查询,对存储空间要求不大,很少增加和删除的情况 2、栈 栈常应用于实现递归功能方面的场景,例如斐波那契数列 3、队列 因为队列先进先出的特点,在多线程阻塞队列管理中非常适用 4、链表 数据量较小,需要频繁增加,删除操作的场景 5、树 二叉树既有链表的好处,也有数组的好处,是两者的优化方案,在处理大批量的动态数据方面非常有用。 6、散列表 哈希冲突的问题,如果处理的不好会浪费大量的时间,导致应用崩溃 7、堆 因为堆有序的特点,一般用来做数组中的排序,称为堆排序 8、图 https://blog.csdn.net/yeyazhishang/article/details/82353846 因为哈希表是基于数组衍生的数据结构,在添加删除元素方面是比较慢的,所以很多时候需要用到一种数组链表来做,也就是拉链法。拉链法是数组结合链表的一种结构,较早前的hashMap底层的存储就是采用这种结构,直到jdk1.8之后才换成了数组加红黑树的结构。 图是一种比较复杂的数据结构,在存储数据上有着比较 复杂和高效 的算法,分别有 邻接矩阵 、邻接表、十字链表、邻接多重表、边集数组等存储结构 2、堆栈特点及应用 栈:特点就是一个先进后出的结构。 队列:特点就是一个先进先出的结构。 栈的应用 :非常广泛,在CPU内部就有提供栈这个机制。主要用途: 函数调用和返回

排序算法

隐身守侯 提交于 2019-12-01 15:34:31
说道排序,我们经常提到时间复杂度和空间复杂度,那么什么是时间复杂度什么又是空间复杂度呢? 时间复杂度:时间复杂度是指执行这个算法所需要的计算工作量 求解算法的时间复杂度的具体步骤是:   ⑴ 找出算法中的基本语句;   算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。   ⑵ 计算基本语句的执行次数的数量级;   只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。   ⑶ 用大Ο记号表示算法的时间性能。   将基本语句执行次数的数量级放入大Ο记号中。   如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加 空间复杂度:空间复杂度是指执行这个算法所需要的内存空间   空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度;计算机上占用内存包括   程序代码所占用的空间,输入输出数据所占用的空间,辅助变量所占用的空间这三个方面。   程序代码所占用的空间取决于算法本身的长短,输入输出数据所占用的空间取决于要解决的问题,   是通过参数表调用函数传递而来,只有辅助变量是算法运行过程中临时占用的存储空间,与空间复杂度相关;   通常来说

CSP-J/S 知识点选的

戏子无情 提交于 2019-12-01 15:11:28
CSP-J/S 知识点选讲 信息学史及基本知识 一、信息学及计算机史 计算机的顶级奖项 :图灵奖 对信息科学做出突出贡献的大神 : 图灵 , 冯 · 诺伊曼 中国获图灵奖的大神 :姚期智(清华就有姚班,就是以他的名字命名的) 世界第一台电子计算机 :埃尼阿克(ENIAC),于1946年2月14日在美国宾夕法尼亚大学诞生。又被叫做电子管计算机。 二、关于编程 编程语言 : 分两类:面向对象和面向过程。 高级语言和低级语言的区别 : 高级语言需要编译运行,常数较大,运行速度慢。而低级语言常数极小,运行速度快。此外,高级语言更容易移植。 常见低级语言 : 汇编 面向对象的高级语言 : C++,Java,EIFFEL,Simula 67等。 面向过程的高级语言 : C,Fortran语言。 递归编程 : 递归是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题。简单来讲,就是“自身调用自身”(在函数中)。 P类/NP类/NPC类问题 : 1、P类问题:如果一个问题能找到一个在多项式时间内解决它的算法,那么这个问题就是P问题。 2、NP类问题:注意:NP问题 不是非P类问题 ,而是在多项式时间内验证一个解的问题。或者,我们可以将其理解为在多项式时间内猜出一个解的问题。 3、NPC类问题:定义如下:如果一个问题是NP问题

CSP-J/S 知识点选讲

两盒软妹~` 提交于 2019-12-01 13:39:46
CSP-J/S 知识点选讲 信息学史及基本知识 一、信息学及计算机史 计算机的顶级奖项 :图灵奖 对信息科学做出突出贡献的大神 : 图灵 , 冯 · 诺伊曼 中国获图灵奖的大神 :姚期智(清华就有姚班,就是以他的名字命名的) 世界第一台电子计算机 :埃尼阿克(ENIAC),于1946年2月14日在美国宾夕法尼亚大学诞生。又被叫做电子管计算机。 二、关于编程 编程语言 : 分两类:面向对象和面向过程。 高级语言和低级语言的区别 : 高级语言需要编译运行,常数较大,运行速度慢。而低级语言常数极小,运行速度快。此外,高级语言更容易移植。 常见低级语言 : 汇编 面向对象的高级语言 : C++,Java,EIFFEL,Simula 67等。 面向过程的高级语言 : C,Fortran语言。 递归编程 : 递归是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题。简单来讲,就是“自身调用自身”(在函数中)。 P类/NP类/NPC类问题 : 1、P类问题:如果一个问题能找到一个在多项式时间内解决它的算法,那么这个问题就是P问题。 2、NP类问题:注意:NP问题 不是非P类问题 ,而是在多项式时间内验证一个解的问题。或者,我们可以将其理解为在多项式时间内猜出一个解的问题。 3、NPC类问题:定义如下:如果一个问题是NP问题

结对编程作业(python实现)

南楼画角 提交于 2019-12-01 13:35:24
一、 Github项目地址: https://github.com/asswecanfat/git_place/tree/master/oper_make 二、 PSP2.1表格: PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 150 150 · Estimate · 估计这个任务需要多少时间 150 150 Development 开发 1340 1720 · Analysis · 需求分析 50 60 · Design Spec · 生成设计文档 40 60 · Design Review · 设计复审 30 30 · Coding Standard · 代码规范 20 20 · Design · 具体设计 100 120 · Coding · 具体编码 1000 1250 · Code Review · 代码复审 60 80 · Test · 测试(自我测试,修改代码,提交修改) 40 100 Reporting 报告 90 130 · Test Report · 测试报告 50 80 · Size Measurement · 计算工作量 20 20 · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 30 合计

结对编程(python实现)

天涯浪子 提交于 2019-12-01 13:33:24
一、 Github项目地址: https://github.com/asswecanfat/git_place/tree/master/oper_make 二、 PSP2.1表格: PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 150 150 · Estimate · 估计这个任务需要多少时间 150 150 Development 开发 1340 1720 · Analysis · 需求分析 50 60 · Design Spec · 生成设计文档 40 60 · Design Review · 设计复审 30 30 · Coding Standard · 代码规范 20 20 · Design · 具体设计 100 120 · Coding · 具体编码 1000 1250 · Code Review · 代码复审 60 80 · Test · 测试(自我测试,修改代码,提交修改) 40 100 Reporting 报告 90 130 · Test Report · 测试报告 50 80 · Size Measurement · 计算工作量 20 20 · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 30 合计