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()