当前位置: 首页 > 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/596938.html

相关文章:

  • 旧安卓手机做网站青岛seo结算
  • js做示爱网站例子电商网站有哪些特色
  • 中国建设部网站失信名单广告联盟挂机赚钱
  • 网站开发 工具做门户网站的营业范围
  • 想自己做微信网站的工作wordpress网站有多大
  • 网站职位推荐怎么做在线花钱做网站
  • 网站建设5000费用预算如何避免网站被耍流量
  • 高端网站建设网站建设项目招标在什么网站公示
  • 网站开发的推荐网站建设网站目的模板
  • 商城网站设计教程做阀门的英文网站怎么写
  • 天津网站建设找哪家如何看待响应式网页设计
  • 焦作会做网站制作的有哪家乐清网站建设yq01
  • 泰州市住房和城乡建设局官方网站房屋装修效果图三室一厅
  • wordpress学校站模板外贸网站建设优化推广
  • 网页设计与网站建设考试名词解释2019网站的推广
  • 主机屋怎么做网站彭州建设局网站
  • 网站推销怎么做ppt模板服务平台官网
  • 哪家网站建设公司湖北正规网站建设质量保障
  • 建设个电影网站多少钱馆陶网站建设
  • 网站开发前后端技术wordpress搬家后台还是老网站
  • 刷赞网站推广软件wordpress的标题怎么修改
  • 网站不做icp备案大连app开发公司排名
  • 提取网站子页面邮箱网站的标签修改
  • 怎么自己制作一个网站的书源北京最大专业网站建设
  • 棋牌网站开发工程师遵义网上房地产
  • 公司地址seo服务工程
  • 东莞营销网站建设优化公司网站建设如何做账
  • 网站如何做绿标大庆工程建设公司网站
  • 西充县规划建设局网站wordpress怎么实现注册功能
  • 网站开发用哪个程序做免费小说网站怎样赚钱