经典递归算法算法与排序算法

来源:互联网 发布:还有哪些办公软件 编辑:程序博客网 时间:2024/05/16 05:51
#coding:utf-8
#递归算法经典例子
#1,阶乘
def fn(n):
    if n==1:
        return 1
    else:
        return n*fn(n-1)
#阶乘递归过程
fn(5)=5*fn(4)
fn(4)=4*fn(3)
fn(3)=3*fn(2)
fn(2)=2*fn(1)
fn(1)=1
fn(2)=2
fn(3)=6
fn(4)=24
fn(5)=5*24


#2,汉诺塔
    def move(n,a,buff,c):
        if n==1:
            print a,'=>',c
        move(n-1,a,c,buff)
        move(1,a,buff,c)
        move(n-1,buff,c,a)
#汉诺塔递归过程
move(3,'a','b','c')=move(2,'a','c','b'),move(1,'a','b','c'),move(2,'b','c','a')
                                                                        a=>c
move(2,'a','c','b')=move(1,'a','b','c'),move(1,'a','c'.'b'),move(1,'c','b','a')
                                 a=>c                        a=>b                                 c=>a
move(2,'b','c','a')=move(1,'b','c','a'),move(1,'b','c','a'),move(1,'c','a','b')
                                    b=>c                         b=>a                           c=>b

#3,斐波那契数列
    def fibo(n):
        if n==1 or n==2:
            return 1
        if n>=3:
            return fibo(n-1)+fibo(n-2)
#斐波那契数列递归过程
fibo(4)=fibo(3)+fibo(2)
fibo(3)=fibo(2)+fibo(1)
fibo(2)=1
fibo(1)=1
fibo(3)=2

fibo(4)=3


经典排序算法:

点击打开链接






1 0
原创粉丝点击