大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39

很容易我们想到使用递归求解:

public class Solution {public int Fibonacci(int n) {if(n == 0)return 0;if(n == 1)return 1;return Fibonacci(n-2) + Fibonacci(n-1);}
}

当n比较大时,可以明显感觉算法运行速度比较慢,这是由于上述返回代码中使用了两层递归,使用递归的思想是好的,但是这里我们可以用迭代明显改善算法运行效率,用空间换时间:

public class Solution {public int Fibonacci(int n) {if(n < 2)return n;int f = 0, g = 1;int result = 0;for(int i = 1; i < n; i++){result = f + g;f = g;g = result;}return result;}
}

问题变形

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

分析


对于n步操作,可以分两种情况讨论:
1. 第一步这样覆盖

那么f(n) = f(n-1);
2. 第一步这么覆盖

那么下一步只有可能这么覆盖

那么f(n) = f(n-2)
所以f(n) = f(n-1) + f(n-2)

public class Solution {public int RectCover(int target) {if(target  <= 1){return 1;}if(target*2 == 2){return 1;}else if(target*2 == 4){return 2;}else{return RectCover((target-1))+RectCover(target-2);}}
}

递归算法--斐波那契数列相关推荐

  1. python递归算法——斐波那契数列

    文章目录 一,递归方法: 二,斐波那契数列简介: 特性一: 特性二: 两种方法运行时间对比: / 一,递归方法: / 递归方法为:将问题一步步分解,直到得到可以解决的简单问题. 通常涉及直接或间接条用 ...

  2. python编写递归函数和非递归函数、输出斐波那契数列_python 入门之斐波那契数列递归表达式算法和非递归算法...

    题目: 斐波那契数列是一组有规律的数列:1,1,2,3,5,8,13,--..,那么我们怎么用python 来完成此算法,并求出第200位的值是多少 1.python 递归表达式实现: def fib ...

  3. 递归与分治——斐波那契数列非递归,递归,与优化后的递归算法

    斐波那契数列: 1.1.2.3.5.8.13.21.-- 简单说,就是前两项的和是第三项的值. 1.求第N个斐波那契数的值(非递归) //斐波那契数列 int fun(int n) {int a = ...

  4. c++调用cplex求解例子_递归算法的R语言实现 (罗汉塔、九连环、斐波那契数列等问题的求解)...

    递归算法用函数来实现,通俗地说就是函数对自身的调用,求解递归问题就转化为函数的调用关系问题.函数f(n)随自变量n的增加而变化,函数的调用关系也就表现为f(n)与f(n-1)或f(n-2)关系的问题. ...

  5. C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)

    本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...

  6. python 利用递归算法来完成计算乘阶、斐波那契数列、汉诺塔

    一.求一个整数的阶乘: 1.常用的迭代方法写法: def jc(n):result = nfor i in range(1, n):result *= ireturn resultnu = int(i ...

  7. python递归算法(斐波那契数列,汉诺塔、二分法查找)

    # 递归算法的三大特点 # 1.递归过程一般通过函数或子过程来实现 # 2.递归算法在函数或子过程的内部,直接或间接调用自己的算法 # 3.递归算法实际上是把问题转换为规模缩小的同类问题的子问题,然后 ...

  8. 递归算法——阶乘、斐波那契数列

    文章目录 前言 一.什么是递归算法? 二.递归算法特点 三.递归算法的使用要求 四.应用示例--阶乘 1.阶乘概述 2.思路分析 3.代码实现 五.应用示例--斐波那契数列 1.思路分析 2.代码实现 ...

  9. python递归求斐波那契数列前20项_用递归算法实现斐波那契数列1,1,2,3,5,8,13……的前20项,每输出5项一换行,用C++...

    关于 用递归算法实现斐波那契数列1,1,2,3,5,8,13--的前20项,每输出5项一换行,用C++的搜索结果 回答 请参考这篇文章,https://help.aliyun.com/document ...

最新文章

  1. 异步系统接口调用流程图
  2. 计算机脚本程序编写,实验三-shell脚本程序设计.docx
  3. 《Python面向对象编程指南》——2.7 __del__()方法
  4. STM32分散加载文件
  5. 如何理解许多Android布局
  6. 《游戏编程模式》一7.5 状态对象应该放在哪里呢
  7. Halcon深度学习总结
  8. 【频率计】基于ISE+VHDL编程的多功能数字频率计
  9. 你所谓的诗和远方,不过是虚荣感作祟
  10. 房地产项目开发流程参考
  11. 普通路由器改4g路由器_工业远程管理神器,4G无线路由器更方便
  12. win10图片打不开,显示系统文件错误(-2147219196)
  13. Android客户端连接服务器- OKHttp的简单实用方法
  14. Windows 查看端口是否已打开
  15. mysql数据库编程题题_mysql数据库编程题测试
  16. Java解压缩技术(三)BZIP2压缩-解压缩
  17. 影响你生活的14个心理效应
  18. python 热图颜色_Python可视化matplotlibseborn14-热图heatmap
  19. BUPT数电爱课堂概念题_易错点_错题 汇总
  20. htonl, ntohl两种实现

热门文章

  1. 小学计算机第二册教学计划,小学信息技术第二册上教学计划
  2. 模拟建行网上支付页面通知
  3. windows内核编程读书摘抄
  4. 正态分布,Q函数,误差函数,补误差函数
  5. 企鹅龙(Clonezilla )PXE-批量安装系统
  6. 虚拟机黑屏怎么办 vmware虚拟机开机黑屏的解决方法
  7. 1015: 二次方程的实根
  8. Dom操作的性能优化
  9. hive中使用正则表达式匹配数字
  10. kafka核心概念与应用场景