Python - 递归

一个递归函数是指一个函数调用了它自己,将问题分解为更小的问题,知道分解为最基本的问题。


递归的指数计算函数


指数函数的迭代定义

def power(r,n):
    value=1
    for i in range(1,n+1):
        value=r*value
    return value

print(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 False

print(isPalindrome("gig"))

递归的分形计算函数

分形图形

import turtle

def 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=0

def main():
    one()

def one():
    global counter
    counter+=1
    if counter<5:
        print("1",end="")
        two()

def two():
    print("2",end="")
    one()

main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值