算法基本整理

作者: ropon 分类: 经验分享 发布时间: 2019-05-28 14:18
#算法基本整理

def func2(n):
    if n > 0:
        func2(n - 1)
        print(n)


# func2(2)
#         输出2
# func2(1)
#         输出1
# func2(0)
#     没有输出
# func2(2)

# print("====", end="\n")
# print("====", end="")

def func3(n):
    if n > 0:
        print("抱着", end="")
        func3(n - 1)
        print("的我", end="")
    else:
        print("我的小鲫鱼", end="")


# func3(3)
#     输出 抱着
#     func3(2)
#         再输出 抱着
#         func3(1)
#             再输出 抱着
#             func3(0)
#             输出 我的小鲫鱼
#     的我
#     的我
#     的我

# func3(3)
import time


def cal_time(func):
    def inner(*args, **kwargs):
        start = time.time()
        ret = func(*args, **kwargs)
        stop = time.time()
        temp = stop - start
        print(f'函数执行了{temp}秒')
        return ret

    return inner


def fbnqxl(n):
    if n == 0 or n == 1:
        return 1
    else:
        return fbnqxl(n - 1) + fbnqxl(n - 2)


@cal_time
def fib1(n):
    return fbnqxl(n)


@cal_time
def fib2(n):
    li = [1, 1]
    for i in range(2, n + 1):
        # li.append(li[i - 1] + li[i - 2])
        li.append(li[-1] + li[-2])
    return li[n]


# 1 1 2 3 5 8

@cal_time
def fib3(n):
    a = 1
    b = 1
    c = 1
    for i in range(2, n + 1):
        c = a + b
        a = b
        b = c
    return c


# print(fib1(20))
# print(fib2(10000))
# print(fib3(10))

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!