题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。

class Solution {
public:int Fibonacci(int n) {       if(n==0)return 0;else if(n==1)return 1;else//    return Fibonacci(n-1)+Fibonacci(n-2);{int *array;array=(int*)malloc(n*sizeof(int));array[0]=0;array[1]=1;for(int i=2;i<n;i++){array[i]=array[i-1]+array[i-2];    }return (array[n-1]+array[n-2]);}}
};

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解析:当n = 1, 只有1中跳法;当n = 2时,有两种跳法;当n = 3 时,有3种跳法;当n = 4时,有5种跳法;当n = 5时,有8种跳法;.......规律类似于Fibonacci数列

class Solution {
public:int jumpFloor(int number) {if(number==1)return 1;if(number==2)return 2;elsereturn jumpFloor(number-1)+jumpFloor(number-2);}
};

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解析:用Fib(n)表示青蛙跳上n阶台阶的跳法数,青蛙一次性跳上n阶台阶的跳法数1(n阶跳),设定Fib(0) = 1;
当n = 1 时, 只有一种跳法,即1阶跳:Fib(1) = 1;
当n = 2 时, 有两种跳的方式,一阶跳和二阶跳:Fib(2) = Fib(1) + Fib(0) = 2;
当n = 3 时,有三种跳的方式,第一次跳出一阶后,后面还有Fib(3-1)中跳法; 第一次跳出二阶后,后面还有Fib(3-2)中跳法;第一次跳出三阶后,后面还有Fib(3-3)中跳法
Fib(3) = Fib(2) + Fib(1)+Fib(0)=4;
当n = n 时,共有n种跳的方式,第一次跳出一阶后,后面还有Fib(n-1)中跳法; 第一次跳出二阶后,后面还有Fib(n-2)中跳法..........................第一次跳出n阶后, 后面还有 Fib(n-n)中跳法.
Fib(n) = Fib(n-1)+Fib(n-2)+Fib(n-3)+..........+Fib(n-n)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-1)
又因为Fib(n-1)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-2)
两式相减得:Fib(n)-Fib(n-1)=Fib(n-1) => Fib(n) = 2*Fib(n-1) (n >= 2)

class Solution {
public:int jumpFloorII(int number) {if(number==0||number==1)return 1;elsereturn 2*jumpFloorII(number-1);}
};

题目描述

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

class Solution {
public:int rectCover(int number) {if(number==1)return 1;if(number==2)return 2;else return rectCover(number-1)+rectCover(number-2);}
};

题目描述

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

解析:观察题目中的矩形,2*n的,是个长条形。既然只是简单的长条形,那么依然逆向分析。既然是长条形的,那么从后向前,最后一个矩形2*2的,只有两种情况:   第一种是最后是由一个2*(n-1)的矩形加上一个竖着的2*1的矩形  另一种是由一个2*(n-2)的矩形,加上两个横着的2*1的矩形  因此我们可以得出,  第2*n个矩形的覆盖方法等于第(n-1)个2*1的小矩形加上第(n-2)个2*1的小矩形方法。

class Solution {
public:int rectCover(int number) {if(number==0)return 1;else if(number==1)return 1;else if(number==2)return 2;else return rectCover(number-1)+rectCover(number-2);/*unsigned int array[71]={1,1,2};for(int i=3;i<71;i++){array[i]=array[i-1]+array[i-2];}return array[number];*/}
};

剑指offer 算法 (递归与循环)相关推荐

  1. java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...

    推荐阅读:宇宙条的工作总结:一年前还在面试找工作,一年后在面试找工作的学弟学妹们:第一次当面试官的经历分享小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合 ...

  2. 道指mt4代码_剑指offer算法题052:正则表达式匹配

    小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...

  3. 剑指offer算法题028:数组中出现次数超过一半的数字

    小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...

  4. 剑指offer算法题分析与整理(一)

    下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.数组中的逆序对 2.二维数组中的查找 3.顺时针打印矩阵 ...

  5. 剑指offer算法题分析与整理(二)

    下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.序列化二叉树 2.带记忆的DFS搜索 3.坐标数位和不大 ...

  6. 剑指offer算法合集

    汇总:Android小白成长之路_知识体系汇总[持续更新中-] 简述 算法,不知道是多少程序猿的痛,对我而言也如此,因此今天开始记录那些刷过的算法题,其中最经典的莫过于剑指offer里的题目,精妙的解 ...

  7. LeetCode剑指offer算法备战春招-包含min函数的栈

    剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...

  8. 剑指offer算法题02

    写在前面 主要是题目太多,所以和前面的分开来记录. 有很多思路的图都来源于力扣的题解,如侵权会及时删除. 不过代码都是个人实现的,所以有一些值得记录的理解. 七.动态规划 1. 斐波那契数列 题目:h ...

  9. 剑指offer算法题01

    写在前面 主要是分类一下刷题遇到的一些题型. 有很多思路的图都来源于力扣的题解,如侵权会及时删除. 不过代码都是个人实现的,所以有一些值得记录的理解. 一.哈希表 1. 数组中重复的数字 题目描述:h ...

最新文章

  1. tableau问题汇总
  2. 解决SecureCRT中文乱码
  3. 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!
  4. PowerDesigner的一下简单使用技巧
  5. python-冒泡排序
  6. socket通信入门
  7. Node.js 8有哪些重要功能和修复?
  8. vim 命令_Vim 操作命令手册
  9. 在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句
  10. c++经典编程题_全国青少年软件编程等级考试C语言经典程序题10道十
  11. bash历史命令数_如何使用Bash历史记录命令
  12. 解决docker中运行scrapy使用chrome selenium报错InvalidSessionIdException: Message: invalid session id
  13. Android Butterknife
  14. php 实现数组转json数据结构,php怎么实现数组转json
  15. 解决Linux下ArcGIS Server的Tomcat不稳定问题,nginx配置反向代理时的一个小问题
  16. bootstrap select下拉框模糊搜索和动态绑定数据解决方法
  17. html5支付认证,html5实现微信支付宝接口
  18. PIC单片机IDE,IPE和PICkit3下载使用的几个坑
  19. MySQL 8.0完美卸载(windows)
  20. 技术管理之巅-如何从零打造高质效互联网技术团队?

热门文章

  1. springmvc常用配置
  2. mysql之存储引擎的选择
  3. VC++ 文件和应用程序关联,默认图标不显示问题
  4. 23 DesignPatterns学习笔记:C++语言实现 --- 2.2 Adapter
  5. 中山大学2016年硕士研究生入学考试复试基本分数线
  6. 【Android】BroadCast广播机制应用与实例
  7. CV_CAST_8U(val);的意义
  8. Docker网络模型(八)
  9. HTTP协议(HyperText Transfer Protocol,超文本传输协议)
  10. 「架构技术专题」如何构建网站高可用架构(详细分析篇)?(6)