数据结构及算法分析(0)——引论
引论提到算法递归的概念,递归在很多算法中都会出现。所谓递归,当一个函数用它自己来定义的时候就称为递归。
递归调用有两大要素:
- 基准情况。
- 递归调用。
并非所有的数学递归函数都能有效地由C语言的递归模拟来实现。一般来说,递归调用并非循环逻辑,它与其它的调用在处理上没什么不同,只是递归调用将反复进行直到基准情况出现。
递归调用有四大基本法则:
- 基准情况。如先前提到,一个正确的递归必须具有不需要递归就能求解出的基准情况。一个没有基准情况的数学递归是没有意义的,也不能计算出正确的解,可能会陷入死循环甚至引起程序的崩溃。
- 不断推进。有了基准情况,递归调用还必须有一个正确的推进方向,递归调用必须朝着基准情况推进,否则也不能求解。
- 设计原则。假设所有的递归都有效。
- 合成效益法则。在求解一个问题的同一实例时,切勿在不同的递归调用中做重复的工作,这样会白白浪费资源。
另外,引论中提到很多的数学概念,这些其实不难,在大学的数学中都已经学过并且十分熟悉了。
习题
1.8 2100(mod 5)是多少?
数据结构及算法分析(0)——引论的更多相关文章
- Java数据结构与算法分析-第一章(引论)-Java中的范型<T,E>构件
一.为什么需要使用范型? 官方的说法是:Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质 ...
- <数据结构与算法分析>读书笔记--数学知识复习
数学知识复习是<数据结构与算法分析>的第一章引论的第二小节,之所以放在后面,是因为我对数学确实有些恐惧感.不过再怎么恐惧也是要面对的. 一.指数 基本公式: 二.对数 在计算机科学中除非有 ...
- <数据结构与算法分析>读书笔记--最大子序列和问题的求解
现在我们将要叙述四个算法来求解早先提出的最大子序列和问题. 第一个算法,它只是穷举式地尝试所有的可能.for循环中的循环变量反映了Java中数组从0开始而不是从1开始这样一个事实.还有,本算法并不计算 ...
- <数据结构与算法分析>读书笔记--运行时间计算
有几种方法估计一个程序的运行时间.前面的表是凭经验得到的(可以参考:<数据结构与算法分析>读书笔记--要分析的问题) 如果认为两个程序花费大致相同的时间,要确定哪个程序更快的最好方法很可能 ...
- [数据结构与算法分析(Mark Allen Weiss)]不相交集 @ Python
最简单的不相交集的实现,来自MAW的<数据结构与算法分析>. 代码: class DisjSet: def __init__(self, NumSets): self.S = [0 for ...
- <数据结构与算法分析>读书笔记--函数对象
关于函数对象,百度百科对它是这样定义的: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.又称仿函数. 听起来确实很难懂,通过搜索我找到一篇 ...
- <数据结构与算法分析>读书笔记--利用Java5泛型实现泛型构件
一.简单的泛型类和接口 当指定一个泛型类时,类的声明则包括一个或多个类型参数,这些参数被放入在类名后面的一对尖括号内. 示例一: package cn.generic.example; public ...
- 数据结构与算法分析:C语言描述(原书第2版 简体中文版!!!) PDF+源代码+习题答案
转自:http://www.linuxidc.com/Linux/2014-04/99735.htm 数据结构与算法分析:C语言描述(原书第2版中文版!!!) PDF+源代码+习题答案 数据结构与算法 ...
- 最小正子序列(序列之和最小,同时满足和值要最小)(数据结构与算法分析——C语言描述第二章习题2.12第二问)
#include "stdio.h" #include "stdlib.h" #define random(x) (rand()%x) void creat_a ...
随机推荐
- 【Python】一个python实例:给重要的文件创建备份.摘自crossin-python简明教程
问题:写一个可以为所有重要文件创建备份的程序 考虑:源路径和目标路径各是什么;所有重要文件-有哪些;备份文件格式是什么;定期备份的话,备份文件名称如何规定等等.(ps,我自己只想到一个路径和名称) 程 ...
- REST API TESTING
在敏捷开发过程中 每隔两周就是一个sprint,,, 在上个sprint中,任务就是REST API TESTING 因为以前没做过API 测试,不懂,然后经过询问查找 终于知道,需要发送请求,然后获 ...
- c#: 解析json, 转成xml, 简单方便
没看到.net framework中有这样的功能, 懒得到处找了, 索性花点时间自己写一个 /* * Created by SharpDevelop. * Date: 2013/6/24 * User ...
- HOG:从理论到OpenCV实践
(转载请注明出处:http://blog.csdn.net/zhazhiqiang/ 未经允许请勿用于商业用途) 一.理论 1.HOG特征描述子的定义: locally normalised ...
- bzoj 1176 Mokia(CDQ分治,BIT)
[题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=96974 [题意] 定义查询操作与修改操作:1 x y z 为 ...
- new和delete为什么要匹配
operator new和operator delete函数有两个重载版本: void* operator new (size_t); // allocate an object void* oper ...
- 命令ls
ls -a 显示所有文件,包括隐藏文件(.开头的文件,配置文件常为隐藏文件)ls -l 显示详细信息ls -R 递归显示子目录结构ls -ld 显示目标目录的详细信息(并不返回目录里的内容)
- 【noip模拟】考试总结
今天睡了14个小时啊 把一星期的觉都补回来了 要不是被叫醒了 我肯定还在睡觉- - 其实现在还想睡... 集训真是伤身啊 感觉再睡就要睡成sb了 鉴于昨天被完虐(真·完虐 怒垫底) 来写篇总结 得分: ...
- css div 不能贴边
*{margin:0;padding:0} 在css 最前加上这句,取消所有内边距和外边距.
- drag and drop
<!DOCTYPE HTML> <html> <head> <script type="text/javascript"> func ...