【算法分析与设计·学习笔记·递归与分治策略】python实现阶乘函数、斐波那契(Fibonacci)、阿克曼(Ackerman)

【算法分析与设计·学习笔记·递归与分治策略】python实现阶乘函数、斐波那契(Fibonacci)、阿克曼(Ackerman),第1张

直接或间接调用自身的算法称为递归函数

1.阶乘函数

def factorial(n):
    if(n==1):
        return 1
    else:
        return factorial(n-1)*n

2.斐波那契(fibonacci)

def fibonacci(n):
    if(n>1):
        return fibonacci(n-1)+fibonacci(n-2)
    else:
        return 1

3.阿克曼(Ackerman)

def Ackerman(n,m):
    if(n==1 and m==0):
        return 2
    elif(n==0 and m>=0):
        return 1
    elif(n>=2 and m==0):
        return n+2
    else:
        return Ackerman(Ackerman(n-1,m),m-1)  

意义:

(1)当m=0,返回n+1

(2)当m=1,若n=0,返回1;

                        若n=1,返回2;

                        若n>1,返回Ackerman(Ackerman(n-1,1),0)=Ackerman(n-1,1)+2,则原式为2n

(3)当m=2,若n=0,返回1;

                        若n>=1,返回Ackerman(Ackerman(n-1,2),1)=2Ackerman(n-1,2),则原式为;

(4)当m=3,若n=0,返回1;

                         若n>=1,返回Ackerman(Ackerman(n-1,m),m-1)  ,则原式为,其中一共有n层

(5)m=4增长速度过快,没有恰当式子来表达

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/578750.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存