王道——数据结构 第一章 思维拓展
求解斐波那契数列的两种算法,分析其时间复杂度。
递归算法:
#include <stdio.h>
long f1( int n );int main ( void )
{int n;scanf( "%d", &n );long f = f1( n );printf( "f(%d) = %ld", n, f );return 0;
} long f1( int n )
{if( n <= 0 )return 0;else if( n <= 2 )return 1;elsereturn f1( n - 1 ) + f1( n - 2 );
}
由于每一次递归的每一项都会向下分出前面两个元素,所以递归算法的时间复杂度为O(2^n)。
非递归算法:
//求解斐波那契数列
#include <stdio.h>
long f2( int n );int main ( void )
{int n;scanf( "%d", &n );long f = f2( n );printf( "f(%d) = %ld", n, f );return 0;
} long f2( int n )
{if( n <= 0 )return 0;else if( n <= 2 )return 1;long p1 = 1, p2 = 1;int i;for( i = 3; i <= n; i++ ){p2 = p1 + p2;p1 = p2 - p1;}return p2;
}
非递归算法的时间复杂度是O(n)。
从上面的对比可以看出,使用递归来求解斐波那契数列是一个很糟糕的决定,原因在于递归的算法造成的很多的重复计算,违背了使用递归算法的合成效益原则。
王道——数据结构 第一章 思维拓展相关推荐
- 王道-操作系统-第一章
王道-操作系统-第一章 1.概念.功能.目标 熟悉的操作系统 windows/linux/macos/ios/Android 1.1 概念 层次结构 定义 1.2 功能和目标 作为系统资源的管理者 进 ...
- 浙大第四版概率论第一章思维导图
浙大第四版概率论第一章思维导图 主要用于自己复习用
- 王道计算机网络 第一章 计算机网络
第一章:计算机网络 1.1 计算机网络概述 1.1.1 计算机网络的概念 概述 计算机网络是一个将分散的.具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的 ...
- 自考02324离散数学第一章思维导图
自考计算机及应用本科专业中,刚刚学习完2014版<离散数学>第一章"命题与命题公式". 为了加深对书本的印象和理解,所以画出思维导图,如下图所示: ========== ...
- 数据结构 第一章 概论
第一章 概论 数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合 数据:描述客观事物的符号.是能被计算机识别.处理的符号的集合. 数据对象:数据元素集合.数据子集 数据元素:是组成数据 ...
- 高数第一章思维导图(目前待录取,原件在评论区分享)
高数 第一章 数列 函数 连续 函数 如果对于每个数x属于D,变量x按照一定的法则总有一个确定的y和它对应,则称x是y的函数. 记为y=f(x).常称x为自变量,y为因变量,D为定义域 极限 极 ...
- 实变函数第一章思维导图知识点总结
实变函数第四章思维导图知识点总结 实变函数第三章思维导图知识点总结 实变函数第二章思维导图知识点总结
- 2023王道考研数据结构第一章---基本概念
1.1 1.数据结构基本概念 1) 数据项.数据元素.组合项 2)数据对象 具有相同性质的数据元素的集合,是数据的一个子集. 如第一个数据对象是关于财富榜的所有数据元素的集合 第二个则是关于微博账号的 ...
- 王道408数据结构——第一章 绪论
文章目录 一.概念 数据结构研究内容 二.数据三要素 逻辑结构 储存结构(物理结构) 运算 三.算法和算法评价 时间复杂度 空间复杂度 四.数字相关汇总 算法性能 二叉树相关 图相关 矩阵相关 一.概 ...
- (王道408考研数据结构)第一章绪论-第二节1:算法的基本概念、算法的特性及设计要求
文章目录 一:算法的基本概念 (1)数据结构和算法的关系 (2)算法(Algorithm)的定义 二:算法的特性 三:算法设计要求 程序=数据结构+算法,前面我们已经探讨了什么是数据结构,明白了如何用 ...
最新文章
- MediaCodeC解码视频指定帧,迅捷、精确
- 哪家中国公司为Java 16贡献最多?Java第一大厂居然不是第一的...
- Cloudstack介绍(一)
- 打不开内存卡,U盘提示未格式化的3种修复及数据恢复方法
- Chrome TTFB中英文解释
- LVM的创建扩展缩减与删除
- linux下载git并为git配置连接ssh
- 一键修改分辨率bat_设置分辨率的批处理 | 学步园
- python爬取instom图片_用python爬虫保存instagram图片
- 计算机网络技术专业一体化课程方案,计算机网络技术课程革新中“一体化”模式的应用研究...
- 1656. Far Away Kingdom's Army
- 简单的水印制作之美图秀秀
- 如何使用计算机对文件修改密码,文件夹怎么设置密码?怎么给文件夹设置密码?...
- GCMail反垃圾邮件系统让企业远离垃圾邮件的困饶
- java和ssm开发的医院体检预约系统有论文
- 影响内存频率的几个因素
- localtime和localtime_r
- Python自动生成代码 - 通过tkinter图形化操作生成代码框架
- mac下安装cobra
- 《神雕瞎驴》,金庸看后哭了^-^
热门文章
- 5G 理论峰值速率是怎么计算的?
- 微信小程序全方位深度解析课程Dome-First项目module
- java的serialization_Java序列化(Serialization) 机制
- 【XXE技巧拓展】————8、黑夜的猎杀-盲打XXE
- 利用Python爬取公交地铁数据(TransBigData版)
- Linux虚拟主机管理系统---wdcp
- IOS nonatomic 与 atomic 的区别
- Python CT图像预处理——nii格式读取、重采样、窗宽窗位设置
- APP离线后,通过SystemClock.elapsedRealtime()校正时间
- maven 下载依赖源码