直接或间接调用自身的算法称为递归函数
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增长速度过快,没有恰当式子来表达
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)