【python】[n的阶层;斐波那契数列] 循环, 递归,尾递归示例

【python】[n的阶层;斐波那契数列] 循环, 递归,尾递归示例

# --n的阶层
# 递归
def fact(n):
    if n == 1:
        return 1
    return n*fact(n-1)


# 尾递归
def fact_iter(num, product=1):
    if num == 1:
        return product
    return fact_iter(num-1, num*product)


# 循环
def fact_cycle(n):
    if n == 1:
        return 1
    else:
        tmp = 1
        for i in range(1, n+1):
            tmp = tmp*i
        return tmp


# --斐波那契数列
# 递归
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)


# 尾递归
def fib_iter(num, res=0, tmp=1):
    if num == 0:
        return res
    return fib_iter(num-1, tmp, res+tmp)


# 循环    斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
def fib_cycle(n):
    if n < 2:
        return n
    else:
        c = 0
        a = 0
        b = 1
        for i in range(1, n):
            c = a + b
            a = b
            b = c
        return c

你可能感兴趣的:(【python】[n的阶层;斐波那契数列] 循环, 递归,尾递归示例)