logo
  • write-homewrite-home-active首页
  • icon-chaticon-chat-activeAI 智能助手
  • icon-pluginicon-plugin-active浏览器插件
  • icon-subjecticon-subject-active学科题目
  • icon-uploadicon-upload-active上传题库
  • 更多功能
  • icon-appicon-app-active手机APP
首页
/
计算机
题目

有如下递归函数[1]fact(n),分析其时间复杂度。写出推导过程。int fact(int n){ if(n<=1) return 1; else return n*fact(n-1);}

有如下递归函数[1]fact(n),分析其时间复杂度。写出推导过程。 int fact(int n) { if(n<=1) return 1; else return n*fact(n-1); }

题目解答

答案

为了分析该递归函数 fact(n) 的时间复杂度,我们需要先确定其基本操作的执行次数与输入规模 $n$ 之间的关系。

  1. 确定基本操作:
    在函数 fact 中,基本操作包括条件判断 if(n&lt;=1) 和乘法运算 n*fact(n-1)(以及函数调用本身的开销)。我们可以假设执行一次基本操作(如判断、乘法、返回)的时间是常数,记为 $O(1)$。

  2. 建立时间复杂度的递推关系:
    设 $T(n)$ 为函数 fact(n) 执行所需的时间(即时间复杂度函数)。

    • 当 $n \le 1$ 时,函数直接执行 if 判断并返回 $1$。这属于常数时间操作,即 $T(1) = O(1)$。
    • 当 $n > 1$ 时,函数执行 if 判断(耗时 $O(1)$),然后执行 else 分支。在 else 分支中,它进行一次乘法运算 n * ...(耗时 $O(1)$),并递归调用 fact(n-1)(耗时 $T(n-1)$)。
      因此,我们可以写出递推方程:
      $T(n) = T(n-1) + O(1)$
  3. 求解递推关系:
    为了更直观地推导,我们假设 $O(1)$ 为一个常数 $c$。
    $T(n) = T(n-1) + c$
    我们可以通过展开递推式来寻找规律:
    $T(n) = T(n-1) + c$
    $T(n) = [T(n-2) + c] + c = T(n-2) + 2c$
    $T(n) = [T(n-3) + c] + 2c = T(n-3) + 3c$
    以此类推,经过 $k$ 次展开后:
    $T(n) = T(n-k) + k \cdot c$
    当递归到达基本情况时,即 $n-k = 1$,此时 $k = n-1$。代入上式:
    $T(n) = T(1) + (n-1) \cdot c$
    已知 $T(1) = c$ (常数时间),代入得:
    $T(n) = c + (n-1) \cdot c = c + n \cdot c - c = n \cdot c$

  4. 得出时间复杂度:
    由于 $T(n) = n \cdot c$,其中 $c$ 是常数,忽略常数因子后,$T(n)$ 与 $n$ 成正比。

该递归函数 fact(n) 的时间复杂度为 $O(n)$。

解析

本题考查递归函数时间复杂度的分析,解题思路是先确定基本操作,再建立时间复杂度的递推关系,最后求解该递推关系得出时间复杂度。

  1. 确定基本操作:
    在函数 fact 中,基本操作包括条件判断 if(n<=1) 和乘法运算 n*fact(n-1)(以及函数调用本身的开销)。假设执行一次基本操作(如判断、乘法、返回)的时间是常数,记为 $O(1)$。
  2. 建立时间复杂度的递推关系:
    设 $T(n)$ 为函数 fact(n) 执行所需的时间(即时间复杂度函数)。
    • 当 $n \le 1$ 时,函数直接执行 if 判断并返回 $1$。这属于常数时间操作,即 $T(1) = O(1)$。
    • 当 $n \gt 1$ 时,函数执行 if 判断(耗时 $O(1)$),然后执行 else 分支。在 else 分支中,它进行一次乘法运算 $n * \cdots$(耗时 $O(1)$),并递归调用 fact(n - 1)(耗时 $T(n - 1)$)。
      因此,递推方程为:$T(n) = T(n - 1) + O(1)$。
  3. 求解递推关系:
    为了更直观地推导,假设 $O(1)$ 为一个常数 $c$,则递推方程变为 $T(n) = T(n - 1) + c$。
    通过展开递推式来寻找规律:
    • $T(n) = T(n - 1) + c$
    • $T(n) = [T(n - 2) + c] + c = T(n - 2) + 2c$
    • $T(n) = [T(n - 3) + c] + 2c = T(n - 3) + 3c$
      以此类推,经过 $k$ 次展开后:$T(n) = T(n - k) + k \cdot c$。
      当递归到达基本情况时,即 $n - k = 1$,此时 $k = n - 1$。代入上式可得:$T(n) = T(1) + (n - 1) \cdot c$。
      已知 $T(1) = c$(常数时间),代入得:$T(n) = c + (n - 1) \cdot c = c + n \cdot c - c = n \cdot c$。
  4. 得出时间复杂度:
    由于 $T(n) = n \cdot c$,其中 $c$ 是常数,忽略常数因子后,$T(n)$ 与 $n$ 成正比。所以该递归函数 fact(n) 的时间复杂度为 $O(n)$。

相关问题

  • 1、网上银行系统的一次转账操作过程中发生了转账金额被非法篡改的行为,这破坏了信息安全的()属性。A. 完整性B. 保密性C. 不可否认性D. 可用性

  • 7、 加强电脑安全防护,及时升级病 毒库,安装防火墙,及时查杀病毒和木马,是防范 电信网络诈骗的有效做法。A. 正确B. 错误

  • 以下哪种方法属于卷积神经网络的基本组件()。A. 卷积层B. 池化层C. 激活函数D. 复制层

  • 下列哪项贪婪最佳优先搜索算法的描述正确()A. 贪婪最佳优先搜索不属于启发式搜索算法B. 贪婪最佳优先搜索是一种A*搜索算法C. 贪婪最佳优先搜索是一种广度优先搜索算法D. 贪婪最佳优先搜索属于有信息搜索算法

  • 下列哪个方法属于知识图谱推理方法()A. 路径排序算法B. 深度学习推断C. 广度优先搜索D. 归纳逻辑程序设计

  • 下列哪项属于因果推理模型()A. 因果图B. 神经符号推理C. 符号推理模型D. 结构因果模型

  • 网络安全包括物理安全[1]、逻辑安全、操作系统安全及联网安全,其中逻辑安全包括访问控制[2]、加密、安全管理及用户身份认证。A. 正确B. 错误

  • 4/5 以下属于人工智能实际应用的是()。A. 机器视觉B. 人脸识别C. 计算机辅助自动规划D. 智能工业机器人E. 刷卡门禁

  • 8、信息安全“三个不发生”不包括( )。单选题Box 确保不发生大面积信息系统故障停运事故Box 确保不发生恶性信息泄密事故Box 确保不发生信息外网网站被恶意篡改事故Box 确保不发生信息内网非法外联事故

  • 下列哪项不是求解对抗搜索问题的基本算法( ) A.反向传播算法 B.广度优先排序算法 C.Alpha-Beta剪枝算法D.最小最大搜索算法

  • 程序=算法+()A. 数据结构B. 程序结构C. 控制结构[1]D. 体系结构

  • 下列不属于量子机器学习算法的是()A. 量子支持向量机B. 量子主成分分析C. 薛定谔方程求解D. 深度量子学习

  • Windows中“复制”操作的快捷键是Ctrl+V。

  • 下列哪项关于监督学习算法的描述正确()A. 强化学习的训练效果一定优于监督学习B. 主要的监督学习方法包括生成方法和判别方法C. 广度优先搜索算法是一种监督学习算法

  • 3.判断题K-means聚类算法对数据的尺寸敏感。()A. 对B. 错

  • AdaBoosting采用多个单一分类器组成一个强分类器()A. 错误B. 正确

  • 网络安全包括物理安全[1]、逻辑安全、操作系统安全及联网安全,其中逻辑安全包括访问控制[2]、加密、安全管理及用户身份认证。A. 正确B. 错误

  • 2、网络安全工作的目标包括:()。A. 信息机密性B. 信息完整性C. 服务可用性D. 以上都是

  • 由脸书(Facebook)公司开发的深度学习编程框架是()A. TensorFlowB. PaddlePaddleC. PyTorchD. Mindspore

  • 9、不在网络安全的基本属性范围内的()。A. 机密性B. 可用性C. 完整性D. 多样性

上一页下一页
logo
广州极目未来文化科技有限公司
注册地址:广州市黄埔区揽月路8号135、136、137、138房
关于
  • 隐私政策
  • 服务协议
  • 权限详情
学科
  • 医学
  • 政治学
  • 管理
  • 计算机
  • 教育
  • 数学
联系我们
  • 客服电话: 010-82893100
  • 公司邮箱: daxuesoutijiang@163.com
  • qt

©2023 广州极目未来文化科技有限公司 粤ICP备2023029972号    粤公网安备44011202002296号