Python之函数递归与迭代

函数递归:

  定义:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

用递归方式求阶乘:

def count(n):
    '''计算n的阶乘'''
    if n==1 or n==0:
        return 1
    else:
        return n*count(n-1)

k=input('请输入一个整数') #k=4
res=count(k) 
print(res)
#24

尾递归优化:

  尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。

def count(n,res=1):
    if n==1 or n==0:
        return res
    return count(n-1,n*res)

print(count(4))
#24

 

函数迭代:

  定义:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。

用迭代方式求阶乘:

def co(n):
    '''求n的阶乘'''
    s=1
    for i in range(1,n):
        s*=i
    return s

co(4)
#24

 

posted @ 2018-09-06 13:56  恋853雨  阅读(6907)  评论(0编辑  收藏  举报