数据结构与算法分析C语言描述--递归

Tips:

1,当一个函数用它自己来定义时就称为是递归(recursive)

数据结构与算法分析C语言描述--递归_第1张图片
对于数值计算使用递归通常不是一个好主意,我们只在解释基本论点时这么做

 C提供的仅仅是遵循递归思想的一种企图,不是所有的数学递归函数都能有效地(或正确地)由C的递归模拟来实现

2,一个常见问题:递归是否就是循环逻辑?

 答案是:虽然我们定义一个函数本身用的是这个函数本身,但我们并没有用函数本身定义该函数的一个特定的实例,

 换句话说,通过使用F(5)来得到F(5)的值才是循环的,通过使用F(4)来得到F(5)的值不是循环的(除非F(4)的求值又要用到对F(5)的计算)数据结构与算法分析C语言描述--递归_第2张图片

3,递归的四条基本法则:

基准情形(总要有某些基准情形,他们不用递归就能求解)

不断推进(对于需要递归求解的情形,递归调用必须总能够朝着产生基准情形的方向推进)

设计法则(假设所有的递归调用都能运行)

合成效益法则(在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性的工作)数据结构与算法分析C语言描述--递归_第3张图片

4,一条定理

 对于N>=0,书的递归打印算法是正确的

数据结构与算法分析C语言描述--递归_第4张图片



2018.1.23

你可能感兴趣的:(算法基础)