栈在JVM虚拟机中是线程的一块私有空间,比如存储函数的调用信息、内部变量等 特性 先进后出和后进先出即FIFO 借用网络的一个图,感觉看完就可以了解了 ...
分类:
其他好文 时间:
2019-01-08 23:31:42
阅读次数:
200
分支/合并框架 ? 分支/合并框架的目的是以递归方式将可以并行的任务拆分成更小的任务,然后将每个子任 务的结果合并起来生成整体结果。它是ExecutorService接口的一个实现,它把子任务分配给 线程池(称为ForkJoinPool)中的工作线程。首先来看看如何定义任务和子任务。 使用Recur ...
分类:
其他好文 时间:
2019-01-07 21:21:44
阅读次数:
130
案例一:汉诺塔 例一: 例二: 案例二:求阶乘 例一: 例二: 案例三:利用递归将输入的字符串反向输出 ...
分类:
编程语言 时间:
2019-01-02 21:39:32
阅读次数:
200
核心思想:选取一个枢轴pivot,将比它小的放到它左边,将比它大的放到它右侧,返回pivot的位置,将数列分成两段进行递归调用。 快速排序的实现: 测试: 结果: ...
分类:
编程语言 时间:
2019-01-01 23:59:24
阅读次数:
298
解释器模式的定义 定义: 给定一门语言,定义它的文法的一种表示, 并定义一个解释器, 该解释器使用该表示来解释语言中的句子. 其类图如下: 其中的角色说明: 抽象表达式代码: 抽象表达式通常只有一个方法, 抽象表达式是生成语法集合的关键, 每个语法集合完成指定语法解析任务, 它是通过递归调用的方式, ...
分类:
其他好文 时间:
2018-12-27 23:45:59
阅读次数:
283
在函数执行时系统需要设立一个“递归工作栈”存储第一层递归所需的信息,此工作栈是递归函数执行的辅助空间,所以可以看出,递归程序在执行时需要系统提供隐式栈这种数据结构来实现,对于一般的递归过程,仿照递归算法执行过程中递归工作栈的状态变化可直接写出相应的非递归算法。这种利用栈消除递归过程的步骤如下。 (1 ...
分类:
其他好文 时间:
2018-12-15 15:51:07
阅读次数:
124
1.时间复杂度的分析 1.时间复杂度的分析 在算法分析中,当一个算法中包含递归调用时,其时间复杂度的分析可以转化为一个递归方程求解。也就是数学上求渐进解得问题,而递归方唱的形式多种多样,其求解方法也不尽相同。迭代法是求解递归方程的一种常用方法,其基本步骤是迭代地展开递归方程的右端,使之成为一个非递归 ...
分类:
编程语言 时间:
2018-12-15 15:44:06
阅读次数:
194
今天来整理一下os库中方法的使用,如何输出一个目录下的所有文件? 1.首先介绍几个基本的的方法: 1)os.getcwd() #返回当前工作目录 2)os.listdir() #返回一个列表,包含当前工作目录下的文件和路径 3)os.path.join(path,*paths) 路径拼接 4)os. ...
分类:
编程语言 时间:
2018-12-11 17:15:29
阅读次数:
156
[TOC] 78/90子集 39/40组合总和 40(39是无重复元素的数组,所以省去排序。另外允许重复选取元素,所以递归调用函数时index不需要+1) 给定一个数组 和一个目标数 ,找出 中所有可以使数字和为 的组合。 中的每个数字在每个组合中只能使用一次。 所有数字(包括目标数)都是正整数。 ...
分类:
其他好文 时间:
2018-12-11 11:14:21
阅读次数:
196
1、递归的特点 递归算法是一种直接或间接调用自身算法的过程,在计算机编程中,递归算法对解决一大类问题是十分,它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点: (1)递归就是在过程或函数里调用自身 (2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 (3)递归算法解题通 ...
分类:
编程语言 时间:
2018-12-10 18:21:59
阅读次数:
188