降低以下代码复杂度n=int(input().strip()) def fun(n): if n==1 or n==2: return 1 elif n==3: return 2 else: return fun(n-1)+fun(n-3) print(fun(n))
时间: 2024-02-19 11:57:55 浏览: 89
编写一个算法来判断一个数 n 是不是快乐数
可以使用记忆化搜索来优化这段代码,避免重复计算。具体来说,可以使用一个字典来存储已经计算过的值,避免重复递归。
具体代码如下所示:
```python
n = int(input().strip())
# 利用字典存储已经计算过的值
memo = {}
def fun(n):
if n == 1 or n == 2:
return 1
elif n == 3:
return 2
# 如果已经计算过,直接返回结果
if n in memo:
return memo[n]
# 否则递归计算
result = fun(n - 1) + fun(n - 3)
# 将结果存入字典
memo[n] = result
return result
print(fun(n))
```
使用记忆化搜索后,代码的复杂度将大大降低。
阅读全文