/*运用递归算法*/ #include<stdio.h>void B(int n) //定义函数{ if (n != 0) { printf("%d",n%2); B(n / 2); }}int main(){ int n; printf("Input number:"); scanf("%d",& ...
分类:
编程语言 时间:
2017-04-19 10:19:49
阅读次数:
446
进击c#的小白一枚,望大神指点。 小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个.第二天早上又将剩下的桃子吃一半,又多吃一个. 以后每天早上吃前一天剩下的一半另一个.到第10天早上猴子想再吃时发现,只剩下一个桃子了.问第一天猴子共摘多少个桃子?(使用递归算法) ...
分析递归算法三种方法替换法、迭代法、通用法(mastermethod)作用:分析递归算法的运行时间分治算法将一个问题分解为与原问题相似但规模更小的若干子问题,递归地解这些子问题,然后将这些子问题的解结合起来构成原问题的解。这种方法在每层递归上均包括三个步骤:divide(分..
分类:
编程语言 时间:
2017-04-14 10:16:47
阅读次数:
248
把递归算法转化为非递归算法, 有如下两种基本方法:1)通过分析, 用迭代的方式自底向上. 有时需用栈保存参数2)模拟函数调用过程, 用栈保存入参 尾递归: 一个函数只在return处调用自身。很多编译器就能将其转换为迭代 更通用点的伪代码: 注: 如果递归子函数都在一起且在递归母函数程序的末尾,则无 ...
分类:
其他好文 时间:
2017-04-14 09:59:40
阅读次数:
142
数组A是具有n个元素的数组,x是A中的一个元素,若A中有一半以上的元素与A相同,则称x是数组A的主元素。例如 ,数组A={1,3,2,3,3,4,3},元素3就是该数组的主元素。 1、移去数组中的两个不同元素后,如果原来数组中有主元素,那么该主元素依然是新数组的主元素。 2、如果数组2k个元素中有k ...
分类:
编程语言 时间:
2017-04-13 00:31:55
阅读次数:
274
1、前言 普通二叉树仅仅能找到结点的左右孩子信息。而该结点的直接前驱和直接后继仅仅能在遍历过程中获得。 若可将遍历后相应的有关前驱和后继预存起来,则从第一个结点開始就能非常快“顺藤摸瓜”而遍历整个树了。 二叉线索树思想是干什么的? 中序遍历这棵树 》转换成链表訪问 2线索化思想 结论:线索化过程就是 ...
分类:
其他好文 时间:
2017-04-12 18:34:02
阅读次数:
208
1. 递归算法与非递归算法实现二叉树的遍历 NOT BUG FREE 1 public class BiTree{ 2 private BiTreeNode root; 3 public BiTree(){ 4 this.root = null; 5 } 6 public BiTree(BiTree ...
分类:
其他好文 时间:
2017-04-09 11:46:33
阅读次数:
137
一个问题可以用动态规划法求解的先决条件: 1、最有子结构性质:当问题的最优解包含了其子问题的最优解时,成该问题具有最有子结构性质。 2、重叠子问题:每次产生的子问题并不总是新问题,有些子问题被反复计算多次。 满足了以上两个条件的问题可以考虑用动态规划法求解,他是一种自底向上的递归算法。 问题描述: ...
分类:
其他好文 时间:
2017-04-09 00:30:33
阅读次数:
295
递归在需要重复操作且操作范围呈规律性变化时可以很方便帮我们解决问题 递归的特点: 1、递归就是在函数中调用自身 2、在使用递归时,必须有一个明确的结束条件,成为递归出口 3、递归算法通常显的很简洁,但是效率较低,所以一般不提倡用递归算法设计程序 4、在递归调用的过程中,系统为每一层的返回点、局部变量 ...
分类:
编程语言 时间:
2017-04-08 21:46:42
阅读次数:
192
由于递归算法使用系统堆栈,性能较差,所以应尽可能使用非递归算法。 1.先序遍历 先序遍历,即得到节点时输出数据。 输出 a b d c e f 2.中序遍历 中序遍历也即等到所有左分支都遍历完成后,才开始输出。 输出 b d a c f e 3.后序遍历 也即等到左右分支都遍历完成后,才开始输出。 ...
分类:
编程语言 时间:
2017-04-08 00:30:12
阅读次数:
244