<6>python学习笔记——递归

递归

分治思想

递归算法是把问题转化为规模缩小了的同类问题的子问题。

一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).

python默认设置递归深度100层

可自行设置:

import sys

sys.setrecursionlimit(XXXXXX)   #XXXXXX表示层数

递归特性:

1 / 必须有一个明确结束的条件

2 / 每次进入更深一层,问题规模相比上次递归应有所减少

3 / 递归效率不高


范例01:阶层

01,阶乘的实现方法1

>>> 
>>> def sum(number):
...     result = number
...     for i in range(1,number):
...             result *=i
...     return result
... 
>>> temp = sum(5)
>>> print(temp)
120
>>> 
02,递归实现阶乘

>>> 
>>> def factorial(n):
...     if n==1:
...             return 1
...     else:
...             return n*factorial(n-1)
... 
>>> temp = factorial(5)
>>> print(temp)
120
>>> 
范例02:斐波那契数列

>>> 
>>> def fab(n):
...     if n <1:
...             return -1
...     if n==1 or n==2:
...             return 1
...     else:
...             return fab(n-1)+fab(n-2)
... 
>>> temp = fab(10)
>>> print(temp)
55
>>> temp = fab(20)
>>> print(temp)
6765
>>> 
>>> 
范例03:汉诺塔

>>> def hanoi(n,x,y,z):
...     if n==1:
...             print(x, '-->',z)
...     else:
...             hanoi(n-1,x,z,y) #将n-1个盘子从x移动到y上,中间借用z
...             print(x,'-->',z) #将最底下的最后一个盘子从x移动到z上
...             hanoi(n-1,y,x,z) #将y上的n-1个盘子移动到z上,中间借用x








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值