python递归算法

递归算法

1、求一个数n的阶乘;

f(n) = n*(n-1)*(n-2) … *2*1 展开表达式  或  f(n) = n*f(n-1) 递归表达式

f(4) 的阶乘

f(4)= 4 * f(3)

                3* f(2)

                         2* f(1)

                                       1

因为f(n)与f(n-1)有关系,即基于其子问题,于是便可以采用“递归”求解。

def  func (n):

        if n == 1: #结束标志

                return 1

        else: return n * func (n - 1)

可视化直观表示即:

递归其实可以看做两部分操作,

一步步去寻求子问题的解(直到满足限制条件,如n==1,得f(1)=1)是“递” ;

得到最基本的子问题的解之后,再一步步返回求上一层的解是“归”。

2、斐波那契数列(递归法)

斐波那契数列指的是这样的一个数列:

0,1,1,2,3,5,8,13,21, ==>f(n)......从第3个数起,每个数都是 前两个数之和。

0 1 2 3 4 5 6 7 8 ==>n

 

代码如下:

def Fibonacci(n):

         if n == 1:

                return 1

        elif n == 0:

                return 0

        elif n >= 2:

                return Fibonacci(n - 1) + Fibonacci(n - 2)

当n=3时,求fibibacci(3)的值过程如下图所示

 

当n=4时,求fibibacci(4)的值过程如下图所示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值