递归与数学归纳法

    递归是程序设计中常用到的一种简单易懂的方法,在很多场合下,利用递归可以大量减少代码量。

    递归往往能体现设计者头脑的聪慧,简单的递归函数省去了大段大段的代码,让人叹服不已。那么,递归的设计又有怎样的固定思路呢?本文将介绍递归与数学归纳法之间的联系,希望给读者一些启迪。

    数学归纳法是数学中重要的一种证明方法。当证明一个数学定理时,采用数学归纳法的思路是,先证明对于简单的可以代入的数,定理成立;再在假设定理对某一数N成立的前提下,证明N+1也是定理成立。其实,数学归纳法利用的是递推的原理,形象地可以叫做多米诺原理。因为N+1的成立就可以向前向后递推所有数都成立。

    而递归利用的也是递推的原理,在整个程序中,反复实现的将是同一个原理。在这一点上,递归与数学归纳法本质是相同的。所以往往可以利用数学归纳法来设计递归的实现。计算机是数学应用的一个分支在这里体现的淋漓尽致。

    这里我们先来看一个例子,非常简单,设计一程序,求自然数N的阶乘N!:

    现在已知N!=N*(N-1)*(N-2)*(N-3)*…*2*1

    首先可知当N=1时 N!=1

    第二步可设当R(N)=N!,R(N+1)=(N+1)!

    第三步,求R(N+1)与R(N)之间的关系。R(N)=N!,
    而R(N+1)=(N+1)!=(N+1)*(N)*(N-1)*…*2*1=(N+1)*N!=(N+1)*R(N)
    

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值