# day3

- Link: https://xingheye.icu/day3/
- Published: 2026-11-01T17:58:42+08:00
- Author: 星和夜

前几天光顾着敲浅谈梦了喵，学业荒废了赶紧补上

#空间换时间

def a(n):

    if n==1 or n==2:

        return 1

    return a(n-1)+a(n-2)

print(a(40))

# 这样的代码需要进行大量的重复运算，效率很低

# 可以使用记忆化搜索来优化效率

temp = {1:1,2:1}

def a_memo(n):

    if n not in temp:

        temp[n]=a_memo[n-1]+a_memo[n-2]

        return a_memo(n-1)+a_memo(n-2)

    return temp[n]

# 当然，Python中有现成的装饰器可以解决这个问题

from functools import cache

@cache

def a_cache(n):

    if n==1 or n==2:

        return 1

    return a_cache(n-1)+a_cache(n-2)

print(a_cache(40))

if __name__==’__main__’:

    print(a_cache(40))

# __name__是Python中的一个特殊变量，当模块被直接执行时，__name__的值是’__main__’，
否则是模块名。

# 只有当模块被直接执行时，才会执行if __name__==’__main__’下的代码。

# 假设有a.py

def hello():

    print(“你好”)

print(“我是 a 文件”)

if __name__ == ‘__main__’:

    print(“我是主程序”)

# 还有b.py

import a

print(“我是 b 文件”)

# 当b.py被直接执行时，会先执行a.py中的代码，然后再执行b.py中的代码。

# 终端会输出：

# 我是 a 文件

# 我是 b 文件
