递归算法在程序设计中的应用分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 递归的计算思维方式
递归算法设计的关键在于如何设定代 表问题变化的参数和递归关系式使问题越 来 越 简 单,规 模 越 小 。如 果 能 够 设 定 好 参 数 以及递归方程,则问题很容易解决。 2 . 1 递归类型的分类
按照所应用类型的不同,递归算法可 以分为以下几类。
(1)基于归纳的递归算法。 在此类问题中,规模为N的问题可以归 纳到前面若干项的计算,问题的求解依赖 于规模缩小的形式,在运用递归的时候大 部 分 问 题 属 于 此 种 类 型,比 如 汉 诺 塔 , fibonacci数列等等[2]。 (2)基于划分的递归算法。 这种递归算法把问题划分成一个或多 个 子 问 题 来 递 归 的 求 解 。这 些 子 问 题,在结 构上和原来的问题一样,但在规模上比原 来 的 小 。如 果 子 问 题 相 对 来 说 还 是 太 大,可 以 继 续 划 分 。这 样 分 别 求 解 这 些 子 问 题,并 把这些子问题组合起来,从而获得原问题 的 解 。比 如 快 速 排 序 ,2分 检 索 ,合 并 排 序 的 递 归 形 式 [2]。 (3)基于迭代的递归算法。 在某些问题中,规模较大的问题既不 可以归纳到前面若干项,也不能划分成大 致相等的子问题,而是需要对所有情况进 行列举,产生符合条件的若干子问题,比如 整 数 因 子 分 解 计 数 问 题 [1]。 2 . 2 参数的选择 在对递归问题求解时,参数的选择是 关键一步,作为递归函数的参数往往是问 题中影响结果的自变量,但并不是所有的
f(2...100)=0 //f(n)赋初值
int fibonacci(int n)
{ if f(n) ≠ 0 return F(n); 复计算
//避免重
if n=0 or 1
t=n;
if n>1 t= fibonacci(n-1)+fibonacci
(n-2);
f(n)=t
} 通过保存f(n)的解,避免了大量的重复 计 算 ,提 高 了 算 法 的 时 间 效 率 。递 归 算 法 的 通用性显著增强。
(2)对 整 网 进 行 二 维 约 束 平 差 。以 深 圳 市 平 面 控 制 网 GP S 点“ G2015、203 5”作 为 起 算数据,对控制网进行二维约束平差计算。
4 精度评定结果
(1)环 闭 合 差 统 计 (表 1)。 (2)基 线 残 差 统 计 (表 2)。 (3)平面平差基线相对精度统计(表3)。 (4)gps点 位 中 误 差 统 计 。 100%的 点 位 精 度 在 1.0cm以内,其中 46%精度小于0.5cm。 以上充分说明观测数据合格,基线解算 质量良好,GPS网的测量精度满足四等要求。
Biblioteka Baidu
表1
参考文献
[1] 周 忠 漠 ,易 杰 军 ,周 琪 .GPS卫 星 测 量 原
理 与 应 用 [M].北 京 :测 绘 出 版 社 ,1995.
[2] 张 雨 化 .公 路 勘 测 设 计 [M].武 汉 :人 民
表2
交 通 出 版 社 ,1986.
[3] 刘 基 余 ,李 征 航 ,王 跃 虎 ,等 .全 球 定 位
(2)重复基线较差和非同步环闭合差的 检核仍按外业基线检核时的要求进行。 3 . 6 网平差
(1)对整网进行无约束平差并检核GPS 网的观测质量。以所有独立基线组成闭合图 形,以三维基线向量及相应方差协方差阵作 为 观 测 信 息 ,以 网 一 点 的 WGS-84系 三 维 坐 标作为起算依据,进行全网无约束平差。
图 1 阶乘函数
递 归 的 本 质 在 于 在 调 用 的 过 程 中 ,问 题的规模会缩小,使用递归得到的相应的 子问题更容易解决,可以用递归方程来表 示 其 依 赖 关 系 。另 一 方 面,规 模 小 到 一 定 程 度,问题就可以直接解决,称为边界条件。 递归方程和边界条件是递归的2个要素,如 图1阶乘函数的设计,在程序设计中表现为 一个分支结构。
信 息 技 术
5 结语
随着城市建设规模日益扩大,今后遇 到高速公路拓宽改建的项目会越来越多, 在保证工程进度及精度要求下,如何将GPS 技术在大型工程施工控制中灵活运用是一 个 只 得 探 讨 的 课 题 。通 过 本 工 程 的 实 践 笔 者得到如下一些体会。
(1)GPS观测受到各种外界因素的影响, 有可能产生粗差和各种随机误差,为了对 GPS观测成果进行质量检查,保证成果的可 靠并恰当地评定精度,就要求由非同步独 立 观 测 边 构 成 闭 合 环 或 符 合 线 路 。作 业 时 不应将非独立边作为独立观测边处理,更 不能将同步闭合环当作非同步闭合环。
根 据 以 上 的 分 析 ,我 们 可 以 得 出 运 用 递归方程解决问题的一般思维方式。
(1)分 析 问 题 ,联 想 判 断 是 否 可 以 运 用 递归。
(2)观 察 变 化 的 量 和 状 态 情 景 分 析 ,确 定目标变量和因变量。
(3)设 定 参 数 ,进 行 等 价 性 转 换 ,问 题 规 模缩小,形成递归关系表达式。
科技资讯 2010 NO.31 SCIENCE & TECHNOLOGY INFORMATION 递归算法在程序设计中的应用分析
信 息 技 术
吴川 江海宁 ( 中国矿业大学徐海学院 江苏徐州 2 2 1 0 0 8 )
摘 要:递归算法是程序设计中一种重要的方法,使用递归方法结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它
量都可以作为参数,参数的选择具备一定 的技巧。
实例:对于一个整数n的划分,就是把n 表 示 成 一 系 列 的 正 整 数 的 和 的 表 达 式 。注 意 划 分 与 次 序 无 关 。给 一 个 n 求 他 的 所 有 划 分数。
例 如 :6可 以 可 以 划 分 为 6;5+1;4+2, 4+1+1;3+3,3+2+1,3+1+1+1;2+2+2; 2+2+1+1;2+1+1+1+1;1+1+1+1+1+1。
科技资讯 2010 NO.31 SCIENCE & TECHNOLOGY INFORMATION
(2)重 复 基 线 的 测 量 差 值ds ≤ 2 2σ 。
(3)各级GPS网同步环闭合差需符合下
式规定:
Wx ≤ n σ Wy ≤ n σ Wz ≤ n σ
5
5
5
Ws ≤ 2 n σ 5
(4)各级GPS网异步环或符合路线坐标
递 归 的 特 点 是 自 己 调 用 自 己 。如 果 在 一 个 函 数 (过 程 )中 ,它 自 己 调 用 了 自 己 ,这 种现象称之为直接递归,如果A函数调用B 函 数 ,B函 数 又 反 过 来 调 用 A函 数 ,那 这 种 现 象 叫 做 间 接 递 归 。和 迭 代 类 似 ,如 果 在 递 归中没有设定退出条件,递归会一直进行 下去,从而大量消耗空间和时间资源,陷入 死循环。
闭合差需符合下式规定:
Vx ≤ 4n σ Vy ≤ 4n σ Vz ≤ 4n σ
3
3
3
V ≤ 2 nσ
(5)无 约 束 平 差 中 ,基 线 分 量 的 改 正 数
的绝对值需符合下式规定:
V∆X ≤ 3σ V∆Y ≤ 3σ V∆Z ≤ 3σ 式 中 :n为 闭 合 环 边 数 ,σ 为 仪 器 的 标 称精度。 3 . 5 数据后处理 (1)GPS观测数据内业编辑输入相关点 位 信 息 后 ,采 用 接 收 机 配 备 的 商 用 软 件 Ashtech solutions 2.5进行基线解算,保证 每一条基线都求出整周模糊度。
(2)对 GPS网 进 行 图 型 设 计 时 ,应 使 闭 合 环的边数小于规范的规定,仅允许个别闭合 环的边数等于规范的边数,为了使外业观测 有 计 划 的 进 行 ,避 免 GPS独 立 边 选 择 的 随 意 性 ,便 于 及 时 检 查 观 测 结 果 。宜 按 设 计 网 图 选定GPS独立边,必要时,在经过技术负责人 审议后,可根据具体情况作适当调整。
(4)设 置 边 界 条 件 ,控 制 递 归 。 (5)设 计 函 数 ,确 定 参 数 。
3 递归算法的改进
递归算法由于其时间和空间开销方面 太大,在处理问题时,往往不能处理规模较 大 的 问 题,需 要 转 换 成 迭 代 的 方 法 。如 果 这
(下转 1 8 页)
16 科技资讯 S C I E N C E & T E C H N O L O G Y I N F O R M A T I O N
递归严格说来并不是一种具体的算法 策略,是指函数/过程/子程序在运行过程 中 直 接 或 间 接 调 用 自 身 的 行 为 。递 归 是 计 算机科学的一个重要概念,一般采用了递 归 思 想 的 算 法 被 称 为 递 归 算 法 。递 归 的 方 法是程序设计中有效的方法,采用递归编 写 程 序 能 使 程 序 变 得 简 洁 和 清 晰 。但 是 用 递归方式所描述的算法,学生一方面对于 复杂问题不容易理解,弄不清楚递归函数 执行的步骤及过程,另一方面需要自己编 写程序时更是没有头绪。
1 递归及其本质
在程序设计与分析中,递归技术是十 分 有 用 的 。递 归 在 程 序 设 计 中 有 多 种 形 式 , 问题定义是递归的比如阶乘,数据结构是 递 归 的 比 如 二 叉 树 ,问 题 解 法 是 递 归 的 。以 上 形 式 都 可 以 采 用 递 归 方 法 来 处 理 。使 用 递归技术往往可使函数的定义和算法的描 述 简 洁 且 易 于 理 解 。有 些 数 据 结 构 如 二 叉 树等,由于其本身固有的递归特性,特别适 合 用 递 归 的 形 式 来 描 述 。另 外 ,还 有 一 些 问 题,虽然其本身没有明显的递归结构,但使 用递归技术来求解可使得设计出的算法简 洁易懂且易于分析。
为算法设计、调试程序带来很大方便。本文针对学生在学习程序设计课程时对递归算法难以理解及掌握等情况,阐述了递归算法的本质、
分类、计算思维方式以及如何提高递归算法在大规模问题中的时间效率。
关键词:递归算法 程序设计 计算思维 时间效率
中 图 分 类 号 :G6
文献标识码:A
文 章 编 号 :1672-3791(2010)11(a)-0016-02
在 这 个 问 题 中 ,变 化 的 量 有 整 数 n,但 如果只有一个参数,设函数为q(n),无法找 到明显的递归关系,所以首先应该考虑添 加 参 数 。问 题 中 另 外 变 化 的 量 有 构 成 划 分 的整数的数目,代入这个参数,问题仍然 找 不 到 递 归 关 系 。如 果 注 意 到 , 整 数 划 分 里如果确定了一个数,则问题的规模自然 缩 小 。这 时 考 虑 添 加 参 数 m,表 示 参 与 划 分 的 最 大 数 , q( n, m) 。我 们 惊 奇 的 发 现 , 只 要 把 q(n,m-1)加 上 包 含 加 数 m的 项 就 等 于 q (n,m).即 q(n,m)=q(n,m-1)+包 含 m加 数 的 表 达 式 数 .例 如 m=4,我 们 可 以 把 q(n,4) =q(n,3)+2(包 含 4加 数 的 表 达 使 有 个 : 4 + 2 , 4 + 1 + 1 ) 。而 我 们 发 现 , 包 含 4 的 表 达 可 以 转 化 为q(n-m,m),具 体 过 程 可 以 参 考 文 献 [1]。 2 . 3 计算思维方式
系 统 原 理 及 应 用 [M].北 京 :测 绘 出 版
社 ,1992.
表3
(上接 1 6 页) 时运用非递归的方法又不易解决时,可以 采 取 一 种 空 间 换 时 间 的 策 略 。比 如 f ib on a cc i 数列问题,代码如下:
int fibonacci(int n) { if (n <= 1) return 1; return fibonacci(n-1)+fibonacci(n-2); } 其 时 间 复 杂 度 达 到 O(2n),中 间 包 含 了 大量的重复计算,但如果将计算过的值保 存 一 下 ,如 果 用 到 ,则 查 一 下 ,可 以 避 免 相 同 子 问 题 的 计 算 。具 体 代 码 如 下 。
递归算法设计的关键在于如何设定代 表问题变化的参数和递归关系式使问题越 来 越 简 单,规 模 越 小 。如 果 能 够 设 定 好 参 数 以及递归方程,则问题很容易解决。 2 . 1 递归类型的分类
按照所应用类型的不同,递归算法可 以分为以下几类。
(1)基于归纳的递归算法。 在此类问题中,规模为N的问题可以归 纳到前面若干项的计算,问题的求解依赖 于规模缩小的形式,在运用递归的时候大 部 分 问 题 属 于 此 种 类 型,比 如 汉 诺 塔 , fibonacci数列等等[2]。 (2)基于划分的递归算法。 这种递归算法把问题划分成一个或多 个 子 问 题 来 递 归 的 求 解 。这 些 子 问 题,在结 构上和原来的问题一样,但在规模上比原 来 的 小 。如 果 子 问 题 相 对 来 说 还 是 太 大,可 以 继 续 划 分 。这 样 分 别 求 解 这 些 子 问 题,并 把这些子问题组合起来,从而获得原问题 的 解 。比 如 快 速 排 序 ,2分 检 索 ,合 并 排 序 的 递 归 形 式 [2]。 (3)基于迭代的递归算法。 在某些问题中,规模较大的问题既不 可以归纳到前面若干项,也不能划分成大 致相等的子问题,而是需要对所有情况进 行列举,产生符合条件的若干子问题,比如 整 数 因 子 分 解 计 数 问 题 [1]。 2 . 2 参数的选择 在对递归问题求解时,参数的选择是 关键一步,作为递归函数的参数往往是问 题中影响结果的自变量,但并不是所有的
f(2...100)=0 //f(n)赋初值
int fibonacci(int n)
{ if f(n) ≠ 0 return F(n); 复计算
//避免重
if n=0 or 1
t=n;
if n>1 t= fibonacci(n-1)+fibonacci
(n-2);
f(n)=t
} 通过保存f(n)的解,避免了大量的重复 计 算 ,提 高 了 算 法 的 时 间 效 率 。递 归 算 法 的 通用性显著增强。
(2)对 整 网 进 行 二 维 约 束 平 差 。以 深 圳 市 平 面 控 制 网 GP S 点“ G2015、203 5”作 为 起 算数据,对控制网进行二维约束平差计算。
4 精度评定结果
(1)环 闭 合 差 统 计 (表 1)。 (2)基 线 残 差 统 计 (表 2)。 (3)平面平差基线相对精度统计(表3)。 (4)gps点 位 中 误 差 统 计 。 100%的 点 位 精 度 在 1.0cm以内,其中 46%精度小于0.5cm。 以上充分说明观测数据合格,基线解算 质量良好,GPS网的测量精度满足四等要求。
Biblioteka Baidu
表1
参考文献
[1] 周 忠 漠 ,易 杰 军 ,周 琪 .GPS卫 星 测 量 原
理 与 应 用 [M].北 京 :测 绘 出 版 社 ,1995.
[2] 张 雨 化 .公 路 勘 测 设 计 [M].武 汉 :人 民
表2
交 通 出 版 社 ,1986.
[3] 刘 基 余 ,李 征 航 ,王 跃 虎 ,等 .全 球 定 位
(2)重复基线较差和非同步环闭合差的 检核仍按外业基线检核时的要求进行。 3 . 6 网平差
(1)对整网进行无约束平差并检核GPS 网的观测质量。以所有独立基线组成闭合图 形,以三维基线向量及相应方差协方差阵作 为 观 测 信 息 ,以 网 一 点 的 WGS-84系 三 维 坐 标作为起算依据,进行全网无约束平差。
图 1 阶乘函数
递 归 的 本 质 在 于 在 调 用 的 过 程 中 ,问 题的规模会缩小,使用递归得到的相应的 子问题更容易解决,可以用递归方程来表 示 其 依 赖 关 系 。另 一 方 面,规 模 小 到 一 定 程 度,问题就可以直接解决,称为边界条件。 递归方程和边界条件是递归的2个要素,如 图1阶乘函数的设计,在程序设计中表现为 一个分支结构。
信 息 技 术
5 结语
随着城市建设规模日益扩大,今后遇 到高速公路拓宽改建的项目会越来越多, 在保证工程进度及精度要求下,如何将GPS 技术在大型工程施工控制中灵活运用是一 个 只 得 探 讨 的 课 题 。通 过 本 工 程 的 实 践 笔 者得到如下一些体会。
(1)GPS观测受到各种外界因素的影响, 有可能产生粗差和各种随机误差,为了对 GPS观测成果进行质量检查,保证成果的可 靠并恰当地评定精度,就要求由非同步独 立 观 测 边 构 成 闭 合 环 或 符 合 线 路 。作 业 时 不应将非独立边作为独立观测边处理,更 不能将同步闭合环当作非同步闭合环。
根 据 以 上 的 分 析 ,我 们 可 以 得 出 运 用 递归方程解决问题的一般思维方式。
(1)分 析 问 题 ,联 想 判 断 是 否 可 以 运 用 递归。
(2)观 察 变 化 的 量 和 状 态 情 景 分 析 ,确 定目标变量和因变量。
(3)设 定 参 数 ,进 行 等 价 性 转 换 ,问 题 规 模缩小,形成递归关系表达式。
科技资讯 2010 NO.31 SCIENCE & TECHNOLOGY INFORMATION 递归算法在程序设计中的应用分析
信 息 技 术
吴川 江海宁 ( 中国矿业大学徐海学院 江苏徐州 2 2 1 0 0 8 )
摘 要:递归算法是程序设计中一种重要的方法,使用递归方法结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它
量都可以作为参数,参数的选择具备一定 的技巧。
实例:对于一个整数n的划分,就是把n 表 示 成 一 系 列 的 正 整 数 的 和 的 表 达 式 。注 意 划 分 与 次 序 无 关 。给 一 个 n 求 他 的 所 有 划 分数。
例 如 :6可 以 可 以 划 分 为 6;5+1;4+2, 4+1+1;3+3,3+2+1,3+1+1+1;2+2+2; 2+2+1+1;2+1+1+1+1;1+1+1+1+1+1。
科技资讯 2010 NO.31 SCIENCE & TECHNOLOGY INFORMATION
(2)重 复 基 线 的 测 量 差 值ds ≤ 2 2σ 。
(3)各级GPS网同步环闭合差需符合下
式规定:
Wx ≤ n σ Wy ≤ n σ Wz ≤ n σ
5
5
5
Ws ≤ 2 n σ 5
(4)各级GPS网异步环或符合路线坐标
递 归 的 特 点 是 自 己 调 用 自 己 。如 果 在 一 个 函 数 (过 程 )中 ,它 自 己 调 用 了 自 己 ,这 种现象称之为直接递归,如果A函数调用B 函 数 ,B函 数 又 反 过 来 调 用 A函 数 ,那 这 种 现 象 叫 做 间 接 递 归 。和 迭 代 类 似 ,如 果 在 递 归中没有设定退出条件,递归会一直进行 下去,从而大量消耗空间和时间资源,陷入 死循环。
闭合差需符合下式规定:
Vx ≤ 4n σ Vy ≤ 4n σ Vz ≤ 4n σ
3
3
3
V ≤ 2 nσ
(5)无 约 束 平 差 中 ,基 线 分 量 的 改 正 数
的绝对值需符合下式规定:
V∆X ≤ 3σ V∆Y ≤ 3σ V∆Z ≤ 3σ 式 中 :n为 闭 合 环 边 数 ,σ 为 仪 器 的 标 称精度。 3 . 5 数据后处理 (1)GPS观测数据内业编辑输入相关点 位 信 息 后 ,采 用 接 收 机 配 备 的 商 用 软 件 Ashtech solutions 2.5进行基线解算,保证 每一条基线都求出整周模糊度。
(2)对 GPS网 进 行 图 型 设 计 时 ,应 使 闭 合 环的边数小于规范的规定,仅允许个别闭合 环的边数等于规范的边数,为了使外业观测 有 计 划 的 进 行 ,避 免 GPS独 立 边 选 择 的 随 意 性 ,便 于 及 时 检 查 观 测 结 果 。宜 按 设 计 网 图 选定GPS独立边,必要时,在经过技术负责人 审议后,可根据具体情况作适当调整。
(4)设 置 边 界 条 件 ,控 制 递 归 。 (5)设 计 函 数 ,确 定 参 数 。
3 递归算法的改进
递归算法由于其时间和空间开销方面 太大,在处理问题时,往往不能处理规模较 大 的 问 题,需 要 转 换 成 迭 代 的 方 法 。如 果 这
(下转 1 8 页)
16 科技资讯 S C I E N C E & T E C H N O L O G Y I N F O R M A T I O N
递归严格说来并不是一种具体的算法 策略,是指函数/过程/子程序在运行过程 中 直 接 或 间 接 调 用 自 身 的 行 为 。递 归 是 计 算机科学的一个重要概念,一般采用了递 归 思 想 的 算 法 被 称 为 递 归 算 法 。递 归 的 方 法是程序设计中有效的方法,采用递归编 写 程 序 能 使 程 序 变 得 简 洁 和 清 晰 。但 是 用 递归方式所描述的算法,学生一方面对于 复杂问题不容易理解,弄不清楚递归函数 执行的步骤及过程,另一方面需要自己编 写程序时更是没有头绪。
1 递归及其本质
在程序设计与分析中,递归技术是十 分 有 用 的 。递 归 在 程 序 设 计 中 有 多 种 形 式 , 问题定义是递归的比如阶乘,数据结构是 递 归 的 比 如 二 叉 树 ,问 题 解 法 是 递 归 的 。以 上 形 式 都 可 以 采 用 递 归 方 法 来 处 理 。使 用 递归技术往往可使函数的定义和算法的描 述 简 洁 且 易 于 理 解 。有 些 数 据 结 构 如 二 叉 树等,由于其本身固有的递归特性,特别适 合 用 递 归 的 形 式 来 描 述 。另 外 ,还 有 一 些 问 题,虽然其本身没有明显的递归结构,但使 用递归技术来求解可使得设计出的算法简 洁易懂且易于分析。
为算法设计、调试程序带来很大方便。本文针对学生在学习程序设计课程时对递归算法难以理解及掌握等情况,阐述了递归算法的本质、
分类、计算思维方式以及如何提高递归算法在大规模问题中的时间效率。
关键词:递归算法 程序设计 计算思维 时间效率
中 图 分 类 号 :G6
文献标识码:A
文 章 编 号 :1672-3791(2010)11(a)-0016-02
在 这 个 问 题 中 ,变 化 的 量 有 整 数 n,但 如果只有一个参数,设函数为q(n),无法找 到明显的递归关系,所以首先应该考虑添 加 参 数 。问 题 中 另 外 变 化 的 量 有 构 成 划 分 的整数的数目,代入这个参数,问题仍然 找 不 到 递 归 关 系 。如 果 注 意 到 , 整 数 划 分 里如果确定了一个数,则问题的规模自然 缩 小 。这 时 考 虑 添 加 参 数 m,表 示 参 与 划 分 的 最 大 数 , q( n, m) 。我 们 惊 奇 的 发 现 , 只 要 把 q(n,m-1)加 上 包 含 加 数 m的 项 就 等 于 q (n,m).即 q(n,m)=q(n,m-1)+包 含 m加 数 的 表 达 式 数 .例 如 m=4,我 们 可 以 把 q(n,4) =q(n,3)+2(包 含 4加 数 的 表 达 使 有 个 : 4 + 2 , 4 + 1 + 1 ) 。而 我 们 发 现 , 包 含 4 的 表 达 可 以 转 化 为q(n-m,m),具 体 过 程 可 以 参 考 文 献 [1]。 2 . 3 计算思维方式
系 统 原 理 及 应 用 [M].北 京 :测 绘 出 版
社 ,1992.
表3
(上接 1 6 页) 时运用非递归的方法又不易解决时,可以 采 取 一 种 空 间 换 时 间 的 策 略 。比 如 f ib on a cc i 数列问题,代码如下:
int fibonacci(int n) { if (n <= 1) return 1; return fibonacci(n-1)+fibonacci(n-2); } 其 时 间 复 杂 度 达 到 O(2n),中 间 包 含 了 大量的重复计算,但如果将计算过的值保 存 一 下 ,如 果 用 到 ,则 查 一 下 ,可 以 避 免 相 同 子 问 题 的 计 算 。具 体 代 码 如 下 。