一、计算的结构—用什么样的结构来表达计算的组织 1、线性结构:链表;可以用简单的流程图表示; 2、非线性结构:树、二叉树;递归算法等 二、计算的方向 1、单向计算:不涉及栈的回退的计算; 2、双向计算:需要栈回退到顶层的计算。 三、计算的复杂性: 计算的结构+方向两者一起决定。 ...
分类:
编程语言 时间:
2019-11-26 19:21:39
阅读次数:
70
3、基本解题步骤或方法: 1) 明确递归函数功能。一定要明确递归程序的功能,对递归程序要完成的功能模棱两可、一知半解,往往导致逻辑混乱,写不出正确的递归程序。 2) 找出递归终止条件。所谓递归,就是在函数内部代码调用函数本身,所以,我们必须要找出递归的结束条件,否则,就会一直调用自己,陷入死循环。也 ...
分类:
编程语言 时间:
2019-11-20 21:17:49
阅读次数:
79
使用递归计算斐波那契数列,例如下面计算第30个数(1,1,2,3,5,8,13。。。) ...
分类:
编程语言 时间:
2019-11-20 12:50:19
阅读次数:
62
要了解红黑树首先需要知道什么是二叉树。由树的定义可以看出,树的定义使用了递归的方式。递归在树的学习过程中起着重要作用,如果对于递归不是十分了解,建议先看看递归算法。 参考博文:https://www.jianshu.com/p/bf73c8d50dc2 ...
分类:
其他好文 时间:
2019-11-18 20:43:59
阅读次数:
74
例子:中序遍历非递归算法 实现代码: //中序遍历的非递归算法 int InOrderTraverse_No_DiGui(BiTree T){ BiTree p; //顶底指向二叉树中节点的游标 InitStack(S); //初始化栈 p = T; //p指向所给的二叉树根节点 while(p | ...
分类:
编程语言 时间:
2019-11-13 23:47:32
阅读次数:
76
归并排序是一个典型的基于分治的递归算法。它不断地将原数组分成大小相等的两个子数组(可能相差1),最终当划分的子数组大小为1时,将划分的有序子数组组合并成一个更大的有序数组。 算法分析: 分,也就是把原数组划分成两个子数组的过程。 治,它将两个有序数组合并成一个更大的有序数组。 它将数组平均分成两部分 ...
分类:
编程语言 时间:
2019-11-04 15:12:33
阅读次数:
53
一、你对动态规划算法的理解: 1、动态规划算法比较难,不过只要多点找题目练习,理解每个题目的基本思想,这类题目还是很容易突破的; 2、可以先找到题目中变量的对应关系,并列出递归方程,思考临界值的问题,并用草稿纸自己走一遍程序,发现递归算法的漏洞,也可以用循环方程解决; 3、除了运用草稿纸,也可以总结 ...
分类:
编程语言 时间:
2019-11-04 00:05:42
阅读次数:
101
一、斐波那契数列 斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368...... 二、递归算法 1. 代码 2. ...
分类:
其他好文 时间:
2019-11-03 16:48:52
阅读次数:
77
广义表创建二叉树关于用广义表的形式表示二叉树的形式如下 ①广义表中的一个字母代表一个结点的数据信息。②每个根结点作为由子树构成的表的名字放在义表的前面。③每个结点的左子树与右子树之间用逗号分开。若结点只有右子树面无左子树,则该逗号不能省略。④在整个广义表的末尾加一个特殊符号(如“@”)作为结束标志。 ...
分类:
编程语言 时间:
2019-11-02 20:11:35
阅读次数:
142
一.特性: (1)最优子结构性质。即问题的最优解所包含的子问题的解也是最优的。 (2)子问题重叠性质。在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题, 有些子问题会被重复计算多次,利用子问题的重叠性质,对于每个子问题只计算一次,然后将结果保存 起来,下次需要重新计算已经计算过的 ...
分类:
其他好文 时间:
2019-11-02 18:02:56
阅读次数:
78