一:什么是递归算法? 递归算法就是直接或者间接的调用自己的方法,在达到一个条件的时候停止调用(递归出口),所以一定要找准好条件,让递归停止,否则就会是无限进行下去 二:递归程序设计的关键 1:找出调用中所需要的参数 2:返回的结果 3:递归调用结束的条件 三:递归程序注意 1:要有方法中自己调用自己 ...
分类:
编程语言 时间:
2019-03-01 19:59:57
阅读次数:
286
菲波那切数列为:0 1 1 2 3 5 8 13 21 34... 规律:从第三个数字起后面的每一个数字都是前两个数字的和。 非递归算法: 递归算法: ...
分类:
其他好文 时间:
2019-01-25 01:12:20
阅读次数:
211
在函数执行时系统需要设立一个“递归工作栈”存储第一层递归所需的信息,此工作栈是递归函数执行的辅助空间,所以可以看出,递归程序在执行时需要系统提供隐式栈这种数据结构来实现,对于一般的递归过程,仿照递归算法执行过程中递归工作栈的状态变化可直接写出相应的非递归算法。这种利用栈消除递归过程的步骤如下。 (1 ...
分类:
其他好文 时间:
2018-12-15 15:51:07
阅读次数:
124
[前文] 二叉树的非递归遍历有 先序遍历、中序遍历 、后续遍历 和 层序遍历。 非递归算法实现的基本思路:使用堆栈。而层序遍历的实现:使用队列。 如下图所示的二叉树: 前序遍历顺序为:ABCDE (先访问根节点,然后先序遍历其左子树,最后先序遍历其右子树) 中序遍历顺序为:CBDAE (先中序遍历其 ...
分类:
其他好文 时间:
2018-11-17 19:27:49
阅读次数:
206
后续遍历关键在于,当节点的 右子树存在且被访问后 或者是 右子树为空 才能访问自身。 在遍历过程中,先将节点从的左孩子到最左节点压栈, 设置标志变量 flag 来判断是否访问过左孩子, pre指针来指向先前访问过的节点。 所有左孩子压栈后, 最后一个节点的左孩子为空,已被访问p = NULL , 令 ...
分类:
编程语言 时间:
2018-10-24 17:51:50
阅读次数:
194
1、什么是二分思想? 二分思想可以理解为是一种将一个大问题分成两个子题,当每次分析完两个子问题后,舍弃其中一个不符合条件的子问题,再将符合条件的子问题一分为二,反复循环搜索判断的操作,直至找到所求的数值或者子问题不能再一分为二时为止的思想。 2、二分搜索算法 二分搜索算法是运用二分思想和分治策略的典 ...
分类:
其他好文 时间:
2018-10-22 20:40:56
阅读次数:
164
1.二分法思想:二分搜索算法是运用分治策略的典型例子。二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找到x,算法终止;如果x<a[n/2],则只在数组a的左半部继续搜索x;如果x>a[n/2],则只在数组a的右半部继续搜索x。通过二分搜索 ...
分类:
其他好文 时间:
2018-10-21 12:15:05
阅读次数:
169
1.描述一个算法优劣用计算次数的数量级。1M/1G/1T。与问题相关的规模用nT(n)=n^2/n^3 2.常见的时间复杂度(用大O表示法表示)常数阶 O(1) 线性阶 O(n)平方阶 O(n^2)对数阶 O(logn)nlogn阶 O(nlogn)立方阶 O(n^3)指数阶 O(2^n ) O(1 ...
分类:
编程语言 时间:
2018-09-25 21:51:54
阅读次数:
143
FIR:有限脉冲滤波器,线性较好,用非递归算法,可用FFT,计算速度快,不用四舍五入,适合于对相位敏感的线性应用场合,设计灵活没有现成公式可用。 输出与现在和过去的输入有关。 IIR:无限脉冲滤波器,采用递归算法,计算速度慢,,非线性四舍五入可引起误差和震荡,适合于对相位不敏感的线性应用场合,高通 ...
分类:
其他好文 时间:
2018-09-14 10:52:12
阅读次数:
177
思路: 嘻嘻,请读者自己手动模拟。博主这里不知道怎么用语言说。 拓展: 算法思路适用于 (1)每层的结点个数 (2)树的最大宽度 (3)节点位于某一层 int height(BiTree T){ if(T==null) return 0; int front= 1, rear= 1;//front ...
分类:
编程语言 时间:
2018-07-23 15:51:54
阅读次数:
160