来自网易的一道看似简单的笔试题

题目:要求以线性时间复杂度实现斐波那契数列。

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 。。。。。。

众所周知的斐波那契实现方式为递归实现:

int feb1(int n) {t1++;if(n == 0 || n == 1) return 1;return feb1(n-1) + feb1(n-2);
}

当n=25时, 迭代次数为242785 。

关于其复杂度的解释比较麻烦,详见http://www.cnblogs.com/python27/archive/2011/12/09/2282486.html

至今看了公开课视频后,才有所感悟,采用动态规划后,其复杂度直接下降到线性,迭代次数为49 。

int a[1000] = {0};
int feb2(int n) {t2++;if(n == 0 || n == 1) return 1;if(a[n] != 0) return a[n];else a[n] = feb2(n-1) + feb2(n-2);return a[n];
}

面试题 (斐波那契数列,复杂度为线性)相关推荐

  1. 算法面试题: 斐波那契数列

    leetcode 算法面试题: 通常用 F(n) 表示,形成的序列称为斐波那契数列.该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和 方案一(递归): /*** 递归* @param ...

  2. 求解斐波那契数列复杂度分析

    前言:斐波那契作为一个算法基础知识,大家一定要掌握,祝大家学得开心~ 什么是斐波那契数列(Fibonacci sequence)? 斐波那契数列(Fibonacci sequence),又称黄金分割数 ...

  3. 斐波那契数列简单步骤分析

    斐波那契数列简单步骤分析 有些同学总觉得斐波那契数列很困难,其实只要把函数搞明白就一点就不困难了. 首先,来看看一段代码: #斐波那契 n = eval(input("请输入一个数:&quo ...

  4. 递推公式斐波那契数列的几种求法

    什么是递推公式 递推公式就是形如斐波那契数列那样,每一项都由前面几项运算求得 下面以斐波那契数列为例讲解递推公式的几种求解方法 斐波那契数列 斐波那契数列形式如下: F(n)={1n=11n=2F(n ...

  5. 剑指offer——面试题10:斐波那契数列

    个人答案: 1 #include"iostream" 2 #include"stdio.h" 3 #include"string.h" 4 ...

  6. fibonacci数列前20项_面试题精选:神奇的斐波那契数列

    斐波那契数列,其最开始的几项是0.1.1.2.3.5.8.13.21.34-- ,后面的每一项是前两项之和,事实上,斐波那契在数学上有自己的严格递归定义. f0 = 0 f1 = 1 f(n) = f ...

  7. [剑指offer]面试题9:斐波那契数列

    面试题9:斐波那契数列 题目一:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项.斐波那契数列的定义如下: ❖ 效率很低的解法,挑剔的面试官不会喜欢 代码如下: long long f ...

  8. 剑指Offer - 面试题10- I. 斐波那契数列

    文章目录 1. 题目 2. DP解题 3. 面试题 08.01. 三步问题 4. LeetCode 509. 斐波那契数 1. 题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 ...

  9. 笔试题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。该题有三种解法:递归的方法求解斐波那契数列、用概率与统计的数学方法解决,3.动态规划

    笔试题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.该题有三种解法:1.递归的方法求解斐波那契数列.2.用概率与统计的数学方法解决,3.动态规划 ...

最新文章

  1. TensorRT 7.2.1开发初步
  2. 解决下载图片不论图像多大总是模糊的问题
  3. ubuntu 修改hostname
  4. mysql 5.6 删除用户_mysql 新增 删除用户和权限分配
  5. linux查看进程和线程的命令
  6. [Vue源码分析] Virtual DOM
  7. 没有docker,谈什么微服务架构?
  8. Linux—vim/vi 翻页跳转命令快捷键
  9. 并发编程之ReadWriteLock接口
  10. 台达plc控制伺服电机编程实例_plc控制伺服电机程序实例讲解!成功都是可以复制的!...
  11. android studio打包h5打包,AndroidStudio将html5打包成apk
  12. Norsar 3D v5.44 Linux 1CD(功能强大的正演软件)
  13. 文案怎么写,才会更有画面感,告诉你2个方法(三)
  14. 2022年底了,你们公司还好吗?我这里不太好
  15. Fusion 360 以及 API 快速了解
  16. rk3128投影仪lcd显示四周显示不完整解决
  17. 「可视化搭建系统」——从设计到架构,探索前端领域技术和业务价值
  18. 什么是云管平台?业界知名的云管平台品牌有哪些?
  19. 自己动手 优化Win7
  20. uniapp 数据统计,数据埋点,自定义事件埋点封装

热门文章

  1. C++ delete删除动态分配的内存
  2. C++ static 类成员
  3. [BZOJ] 3301: [USACO2011 Feb] Cow Line
  4. 病毒及攻击防御手册之八
  5. Spring Boot配置文件规则以及使用方法官方文档查找以及Spring项目的官方文档查找方法...
  6. 慕课网-C++远征之多态篇(中)-学习笔记
  7. 移动CRM的客户价值细分
  8. VS Code创建C项目
  9. 学习面向对象的Javascript的第一步就是要搞清楚两个东西:原型链和作用域链
  10. 讲好话、好讲话和讲话好