一个递归计算与时间复杂度分析的例子

简介:

使用 Python 实现 $x^n$ 的递归计算:

def f(x, n):
    if n == 0:
        return 1
    else:
        return x * f(x, n-1)

我们定义用来计算时间复杂度的函数为 $T$, 则上面的 $x^n$ 的递归计算可以使用如下递推关系来表示:

$$ T(n) = T(n-1) + 1 $$

这样,有 $T(n) = T(n-i) + i$, 故而

$$ \begin{aligned} T(n) &= T(n-(n-1)) + n-1\\ &=T(1) + n-1\\ &=\Theta (1) + n-1\\ &=\Theta(n) \end{aligned} $$

其中,$f \in \Theta(g)$ 表示:存在自然数 $n_0$ 和正数 $cc_1,c_2$, 对于所有的 $n\geq n_0$ 都成立

$$ c_1g(n) \leq f(n) \leq c_2g(n). $$

综上所述,$x^n$ 在上面的递归定义下的时间复杂度为 $\Theta(n)$.

目录
相关文章
|
缓存
如何清除keep-alive缓存
如何清除keep-alive缓存
849 6
|
PyTorch 算法框架/工具
更换Anaconda的下载源为国内源的办法
更换Anaconda的下载源为国内源的办法
4344 0
|
11月前
|
XML JavaScript Java
SpringBoot集成Shiro权限+Jwt认证
本文主要描述如何快速基于SpringBoot 2.5.X版本集成Shiro+JWT框架,让大家快速实现无状态登陆和接口权限认证主体框架,具体业务细节未实现,大家按照实际项目补充。
744 11
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android 消息处理机制估计都被写烂了,但是依然还是要写一下,因为Android应用程序是通过消息来驱动的,Android某种意义上也可以说成是一个以消息驱动的系统,UI、事件、生命周期都和消息处理机制息息相关,并且消息处理机制在整个Android知识体系中也是尤其重要,在太多的源码分析的文章讲得比较繁琐,很多人对整个消息处理机制依然是懵懵懂懂,这篇文章通过一些问答的模式结合Android主线程(UI线程)的工作原理来讲解,源码注释很全,还有结合流程图,如果你对Android 消息处理机制还不是很理解,我相信只要你静下心来耐心的看,肯定会有不少的收获的。
806 3
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
Web App开发
让Chrome支持小于12px 的文字方式有哪些?区别?
让Chrome支持小于12px 的文字方式有哪些?区别?
261 0
|
XML JSON 数据安全/隐私保护
如何使用Fiddler抓取APP接口和微信授权网页源代码
Fiddler是一款强大的抓包工具,用于捕获HTTP/HTTPS流量,包括手机APP和微信授权页面的数据。下载安装Fiddler后,需设置电脑代理,如端口8888,并在手机上配置相同代理,确保两者在同一局域网。通过安装Fiddler证书,可解密HTTPS请求。在手机上打开目标应用或网页,Fiddler将显示请求详情,便于接口调试和数据查看。
793 0
如何使用Fiddler抓取APP接口和微信授权网页源代码
|
C# 图形学
Winform控件优化之Paint事件实现圆角组件(提取绘制圆角的扩展方法)
Paint事件方法中实现圆角控件不要通过事件参数`e.ClipRectangle`获取控件区域范围,原因见最后介绍;注意设置控件背景透明(参见[Winform控件优化之背景透明那些事2...
1079 0
Winform控件优化之Paint事件实现圆角组件(提取绘制圆角的扩展方法)
|
SQL 运维 数据管理
sql管理工具archery简介
Archery是一个多公司采用的SQL管理工具,提供权限管理、工作流配置、实例管理、SQL审核、查询、优化及通知功能。它支持多级审批和不同云环境的数据管理。尝试Archery的SaaS版本可访问[ArcheryDMS.com](https://archerydms.com/home/)。此外,NineData是一个综合平台,包含SQL开发、数据复制等功能,适应混合云和多云环境,由叶正盛创建,详情见[Ninedata.cloud](https://www.ninedata.cloud/aboutus)。
876 0
|
算法 C语言
糊里糊涂的递归和递归经典题(上)
糊里糊涂的递归和递归经典题
295 0
|
小程序 JavaScript 前端开发
微信小程序授权登陆 getUserProfile
微信小程序授权登陆 getUserProfile
464 0