递归思想之---阶乘算法

关于阶乘这里简单说明一下

阶乘是什么?
1 x 2 x 3 x 4 x 5 = 5! 这里的5!就称为5的阶乘,之所以称为阶乘是因为乘数呈阶梯状递减而得名,如下: 5! = 5 x 4 x 3 x 2 x 1 = 120 4! = 4 x 3 x 2 x 1 = 24 3! = 3 x 2 x 1 = 6 2! = 2 x 1 = 2 1! = 1 = 1 0! = 1 注意0的阶乘0!被定义为1,这是数学里的规定。 n的阶乘如下: n!= n x (n-1) x (n-2) x … x 2 x 1 很显然n!是一种递推公式,也符合递归思维,因此有: 当n=0时,n! = 1 ; 当n>=1时,n x (n-1)! 可以发现它使用了阶乘(n-1)!来定义阶乘n!,是不是跟汉诺塔很相似?没错,确实是递归思维的体现。 ok~,关于阶乘我们就简单了解这些。

 

  递归算法的定义(从程序的角度):任何调用自身函数的过程都可以称为递归算法(前面实现的汉诺塔程序就是一个很好的例子)。这里需要注意的是递归必须满足以下两个条件:

  • ①边界条件:至少有一条初始定义是非递归的,如汉诺塔的H(0)=0,阶乘的0!=1。
  • ②递归通式:由已知函数值逐步计算出未知函数值,如汉诺塔的H(0)=0,可以推算出H(1)=H(0)+1+H(0)。

边界条件和递推通式是递归定义的两个基本要素,缺一不可,并且递归通式必须在有限次数内运算完成达到边界条件以保证能够正常结束递归,得到运算结果。好~,以上便是递归的定义,还是那句话理解好递归思维(复杂问题简单化)才是重点!

转载于:https://www.cnblogs.com/Darkqueen/p/9517753.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值