简析递归

原创 2015年07月10日 12:40:15

对于程序小白,递归思想是不太好理解的,国内相关教材对此的讲解也不够简单易懂,其实这种思想我们在高中数学已经接触过的,只是很少有人把他们联系起来。

其实,递归思想,就是经典证明方法——数学归纳法的一种灵活应用。

先来回顾下数学归纳法吧:

一般地,证明一个与自然数n有关的命题P(n),有如下步骤:
(1)证明当n取第一个值n0时命题成立。n0对于一般数列取值为0或1,但也有特殊情况;
(2)假设当n=k(k≥n0,k为自然数)时命题成立,证明当n=k+1时命题也成立。
综合(1)(2),对一切自然数n(≥n0),命题P(n)都成立。
再来看一个简单的递归函数:

int recurMul(a,n)

{

if (n == 1)

return a;

else

return a + recurMul(a,n - 1);

}


这是个用递归思想来求正整数a x n的值的函数,简单分析下,它其实就是数学归纳法的应用。

首先,n = 1是,a x 1 = a, 是一定成立的

 [(1)证明当n取第一个值n0时命题成立。n0对于一般数列取值为0或1]

其次,假定recurMul(a,n - 1)成立,recurMul(a,n) = a + recurMul(a,n - 1)也是一定成立的。

[(2)假设当n=k(k≥n0,k为自然数)时命题成立,证明当n=k+1时命题也成立。]

所以,该递归函数满足了数学归纳法(1)(2)两个条件,recurMul(a,n)肯定也是成立的,我们就可以通过

recurMul(a,n)来求a x n的值了。



简析递归思想及其典型算法

递归:也就是在运行过程中自己调用自己 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就...

Python递归解析Json文件

  • 2017年12月12日 15:52
  • 6KB
  • 下载

递归神经网络LSTM原理——结合实例MATLAB实现

最近正在看递归神经网络,看了网上很多博文,算是鱼龙混杂,并且基本都是使用Python实现,要不就是使用Matlab中的函数库等。对于使用Matlab的同学,甚为不方便。所以我将结合实例,使用matla...

【数据结构与算法】深入浅出递归和迭代的通用转换思想

递归和递归的深入浅出 一般来说,能用迭代的地方就不要用递归!理论上讲,所有的递归和迭代之间都能相互转换! (一)何为迭代?首先我们来看下面这段简单的代码:int sum(int n ) { ...

递归建树与按行打印

  • 2017年11月03日 09:40
  • 760B
  • 下载

C语言---递归反向输出任意长度的字符串

(该字符串可以包含空格和回车!) 【题目要求】 编写一个递归函数,实现将输入的任意长度的字符串反向输出的功能。 例如输入字符串:ABCD,输出字符串:DCBA。【题目分析】 应...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简析递归
举报原因:
原因补充:

(最多只允许输入30个字)