Python
来源:互联网 发布:手机淘宝导航怎么设置 编辑:程序博客网 时间:2024/06/15 16:30
一个递归函数是指一个函数调用了它自己,将问题分解为更小的问题,知道分解为最基本的问题。
递归的指数计算函数
指数函数的迭代定义
def power(r,n): value=1 for i in range(1,n+1): value=r*value return valueprint(power(2,3))
指数函数的递归定义
def power(r,n): if n==1: return r else: return r*power(r,n-1)print(power(2,3))
递归算法有两个特点:
1、具有一个或多个基本问题,其有朴素解
2、具有一个“归纳”的步骤,不断地将问题分解为更小的问题,知道最后分解到一个基本问题。这个归纳的步骤叫做分解。
问题的递归解用伪代码表示如下;
if 到达了基本问题
直接得到基本解
else
重复的分解问题,直到到达基本问题
递归的回文生成函数
回文单词
def isPalindrome(word): word = word.lower() if len(word)<=1: return True elif word[0] == word[-1]: word = word[1:-1] return isPalindrome(word) else: return Falseprint(isPalindrome("gig"))
递归的分形计算函数
分形图形
import turtledef main(): t = turtle.Turtle() t.hideturtle() t.speed(10) level = 12 fract(t,-80,60,80,60,level)def fract(t,x1,y1,x2,y2,level): newX = 0 newY = 0 if level==0: drawLine(t,x1,y1,x2,y2) else: newX = (x1+x2)/2+(y2-y1)/2 newY = (y1+y2)/2-(x2-x1)/2 fract(t,x1,y1,newX,newY,level-1) fract(t,newX,newY,x2,y2,level-1)def drawLine(t,x1,y1,x2,y2): t.up() t.goto(x1,y1) t.down() t.goto(x2,y2)main()
注释
1、递归解法中的基本问题被叫做终止情况或终止条件
2、任何可以由递归解决的问题都可以使用迭代解决。迭代的方法通常执行的更快,并且占用更少的内存。不过,递归解法的代码通常更短,并且更加易读。
3、如果一个递归算法的编写不正确,使得终止条件永远都不会到达的话,程序将可能会终止并输出“RuntimeError:maximun recursion depth exceeded”
4、当两个过程互相调用时也会产生递归,这种递归叫做间接递归。
counter=0def main(): one()def one(): global counter counter+=1 if counter<5: print("1",end="") two()def two(): print("2",end="") one()main()
阅读全文
0 0
- Python
- Python
- Python
- python
- Python
- PYTHON
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- python
- Python
- 搞定4点认知偏好,让疲倦的用户一眼看懂你的文案
- Game of Connections
- Android Tombstone/Crash的log分析和定位
- Kerberos简介
- Jquery操作checkbox时候,checked已经存在;但是没有选中问题解决
- Python
- 实战DeviceIoControl 之五:列举已安装的存储设备
- mongoDB学习(二)——mongoDB的基础操作
- 深度学习 基于R-CNN的物体检测
- Java实现-交错正负数
- 基于Windows环境下Node.js全局环境配置
- window下mongodb在dos下服务器启动及连接
- Python练习7--if
- 【树莓派3】【 modelB】【无线AP】 【wifi静态ip】【路由器AP】【中继AP】