当前位置: 首页 > wzjs >正文

制作网站公司年收入多少厦门网站推广公司哪家好

制作网站公司年收入多少,厦门网站推广公司哪家好,莱芜受欢迎的搜狗推广,个人装修设计软件下面这段代码定义了一个递归函数 fibonacci&#xff0c;用于计算第 n 个斐波那契数。 def fibonacci(n):if n < 1:return nelse:return fibonacci(n - 1) fibonacci(n - 2)虽然代码逻辑正确&#xff0c;但其性能较差&#xff0c;尤其是对于较大的 n 值&#xff0c;其复杂度…

下面这段代码定义了一个递归函数 fibonacci,用于计算第 n 个斐波那契数。

def fibonacci(n):if n <= 1:return nelse:return fibonacci(n - 1) + fibonacci(n - 2)

虽然代码逻辑正确,但其性能较差,尤其是对于较大的 n 值,其复杂度较高:

  • 时间复杂度:当前代码的时间复杂度为 O(2^n),因为每次调用 fibonacci(n) 会递归调用 fibonacci(n-1)fibonacci(n-2),导致重复计算。
  • 空间复杂度:空间复杂度为 O(n),因为递归调用栈的深度为 n
优化 1:使用动态规划(自顶向下,带备忘录)

通过缓存已经计算过的斐波那契数,避免重复计算,可以将时间复杂度优化到 O(n)

def fibonacci(n, memo={}):if n <= 1:return nif n not in memo:memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo)return memo[n]
优化 2:使用动态规划(自底向上,迭代法)

通过迭代的方式计算斐波那契数,避免递归调用栈的开销,同时将空间复杂度优化到 O(1)

def fibonacci(n):if n <= 1:return na, b = 0, 1for _ in range(2, n + 1):a, b = b, a + breturn b
优化 3:使用 Python 内置的 lru_cache 装饰器

Python 的 functools 模块提供了 lru_cache 装饰器,可以自动缓存函数的结果,避免重复计算。

from functools import lru_cache@lru_cache(maxsize=None)
def fibonacci(n):if n <= 1:return nreturn fibonacci(n - 1) + fibonacci(n - 2)
优化4:使用矩阵快速幂算法(高级优化)

对于非常大的 n 值,可以使用矩阵快速幂算法将时间复杂度优化到 O(log n)。这种方法适合对性能要求极高的场景。

def matrix_mult(a, b):return [[a[0][0] * b[0][0] + a[0][1] * b[1][0], a[0][0] * b[0][1] + a[0][1] * b[1][1]],[a[1][0] * b[0][0] + a[1][1] * b[1][0], a[1][0] * b[0][1] + a[1][1] * b[1][1]],]def matrix_pow(matrix, power):result = [[1, 0], [0, 1]]  # Identity matrixwhile power > 0:if power % 2 == 1:result = matrix_mult(result, matrix)matrix = matrix_mult(matrix, matrix)power //= 2return resultdef fibonacci(n):if n <= 1:return nmatrix = [[1, 1], [1, 0]]result = matrix_pow(matrix, n - 1)return result[0][0]

推荐使用 优化建议 2(迭代法),因为它在时间复杂度和空间复杂度上都有较好的平衡,且代码简洁易读。优化后的代码如下:

def fibonacci(n):if n <= 1:return na, b = 0, 1for _ in range(2, n + 1):a, b = b, a + breturn b
http://www.dtcms.com/wzjs/165561.html

相关文章:

  • wordpress英文怎么读关键词优化难度查询
  • 企业网站设置哪个公司做网站推广最好
  • ps做图 游戏下载网站抖音关键词排名
  • 微山网站建设哪家便宜品牌推广策略有哪些
  • 网站建设流费用seo查询工具有哪些
  • 网站建设策划书网页设计品牌推广策略有哪几种
  • wordpress插件pdfseo01
  • 广州网站建设.com百度热点排行榜
  • 独立网站开发者兼职网站什么是友情链接?
  • 学科建设网站为什么sem的工资都不高
  • 带积分的网站建设色盲测试卡
  • 爱如潮水日本免费完整版观看seo网站建设是什么意思
  • 医院网站备案前置审批对seo的认识和理解
  • wordpress 预览pdf关键词排名优化工具
  • 福鼎建设局网站首页线上推广平台报价
  • 帝国做视频网站seo站内优化培训
  • 山东建设主管部门网站北京seo薪资
  • 网站上循环滚动的友情链接怎么做线上销售渠道有哪几种
  • 网络代理加盟平台人教版优化设计电子书
  • visual2008做网站公众号怎么开通
  • 做ppt的网站兼职营销页面
  • 网站建设专业导航网站网络软文营销
  • 校园二手市场网站建设方案阿里巴巴数据分析官网
  • 平台网站建设方案模板下载浏览器观看b站视频的最佳设置
  • 网站查询是否安全搜索引擎营销的基本方法
  • 尼乐清网站建设it培训机构学费一般多少
  • 网站设计开发制作上海搜索引擎优化公司
  • 腾讯云备案网站建设方案书免费代码网站
  • 兰溪做网站关键词网站推广
  • 全国高校校园网站联盟建设山东一级造价师