任何的递归算法都可以转换为非递归算法,而且一般来说递归算法的效率比非递归算法的效率低。但是为啥会有递归算法呢,是因为递归算法看起来思路清晰,而且代码简洁。接下来我主要介绍下归并算法的非递归实现。
主要思想:对于归并算法的非递归实现,我们可以沿着递归实现的逆向方向去思考,递归的思想是自顶向下,将待排序序列不断分解,然后再归并。而非递归的思想就是自底向上,先两两归并,然后再4个4个一起归并,再8个。...
分类:
编程语言 时间:
2016-05-13 01:32:55
阅读次数:
143
二项式系数递归
这个算法的结果是:给出n的值和k的值,根据公式算出二项式系数值。
算法目的:练习使用递归算法
那么什么是递归呢?
在一个算法中,如果有直接调用自身或间接调用自身的过程,就是一个递归算法。
递归步骤:
1>对应于某些参数求值的一个或多个终止条件。
2>一个递归步骤。它根据先前某次值求当前值。递归步骤最终导致终止条件。
举个例子:
幂函...
分类:
其他好文 时间:
2016-05-12 16:53:41
阅读次数:
157
用ArrayList模拟栈的操作,采用递归算法。代码如下: 计算超过14个元素的栈的出栈顺序,时间就开始很长了,每增加1,时间几何级数增长。 其实出栈次序的所有可能就是卡塔兰数,求卡塔兰数几乎不需要时间,非常快,但是卡特兰数只能输出最终结果的总数,不能输出每一个出栈次序的具体数据,所以依情况而使用。 ...
分类:
其他好文 时间:
2016-05-11 09:32:50
阅读次数:
197
一:递归算法 概念:自己调用自己的方法 示例代码如下: 解释: 当i=5时,返回5+sum(4), 当i=4时,返回4+sum(3), 当i=3时,返回3+sum(2), 当i=2时,返回2+sum(1), 当i=1时,返回1 最后求得5+4+3+2+1=15; 二:冒泡排序 概念:如果有以下几个数 ...
分类:
编程语言 时间:
2016-05-10 23:37:03
阅读次数:
220
归并排序采用分治法的思想,将要排序的数分成一个个子问题,最终再将子问题合并,结构上是递归的,而且很多有用的算法结构上都是递归的,对递归的理解一定要透彻,如根据树的前序遍历和中序遍历恢复出原树,就采用了递归算法,总体思想我认为是将递归处理看成一个问题去处理,处理顺序也当成一个问题去思考。接下里通过对归 ...
分类:
编程语言 时间:
2016-05-08 18:10:15
阅读次数:
189
递归算法 ① 程序调用自身的编程技巧称为递归。 ② 一个方法在其定义或说明中又直接或间接的调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需的多次重复计算,大大地减少了程序的代码量。 递归算法注意 ① 递归就是 ...
分类:
编程语言 时间:
2016-05-08 16:54:52
阅读次数:
169
一、递归函数 概念:递归算法是一种直接或者间接的调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的。 特点: ①递归就是在过程或者函数里调用自身。 ②在使用递归策略时,必须有一个明确的递归条件,称为递归出口。 ③递归算法解题通常显得很简洁,但递归算法解题的效率较低。所以一般 ...
分类:
编程语言 时间:
2016-05-05 22:02:15
阅读次数:
212
逆置:
使用递归
//考虑递归算法,若只有一个结点,则直接返回,若存在两个结点(a1,a2)则需要做的操作有:
//a2->next=a1;a1->next=NULL;return a2;
//a2即新的头结点,若有三个结点,则应先将子链(a2,a3)先逆置且返回该子链的新的头结点,然后把子链(a2,a3)当作一个复合结点a2',
//组成新的二元组(a1,a2')然后就可以执行前...
分类:
编程语言 时间:
2016-05-02 07:12:15
阅读次数:
328
字符串的全排列问题: 给定字符串S[0...N-1],设计算法,枚举字符串的全排列。 1、无重复字符串全排列非递归算法 程序实现: 运行结果: 说明:在每次递归前需要保证字符串的顺序不变,因此有每次的替换过程。 2、有重复字符串队规算法 程序实现: 运行结果: 说明:本算法时间复杂度能达到O((n+ ...
分类:
其他好文 时间:
2016-05-01 17:39:56
阅读次数:
327
本节大纲 1.迭代器&生成器 2.装饰器 a.基本装饰器 b.多参数装饰器 3.递归 4.算法基础:二分查找、二维数组转换 5.正则表达式 6.常用模块学习 7.作业:计算器开发 a.实现加减成熟及括号优先级解析 b.用户输入1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4 ...
分类:
编程语言 时间:
2016-05-01 12:16:23
阅读次数:
237