剑指offer--循环递归
来源:互联网 发布:电影产业 知乎 编辑:程序博客网 时间:2024/06/06 09:31
四道题:
1、Fibonacci数列;
class Solution {public: int Fibonacci(int n) { if(n<=1) return n==0?0:1; int op1=0,op2=1; int res=0; for(int i=2;i<=n;++i) { res=op1+op2; op1=op2; op2=res; } return res; }};
2、青蛙跳:一次1节或2节;
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
class Solution {public: int jumpFloor(int number) { //number=1,1种跳法 //number=2,2中跳法;一次跳一阶,一次跳两阶 //number=n:分两种情况。第一次跳一阶,还有f(n-1)种;第一次跳两阶,还有f(n-2)种。 if(number<=2) return number==1?1:2; int op1=1; int op2=2; int res=0; for(int i=3;i<=number;++i) { res=op1+op2; op1=op2; op2=res; } return res; }};
3、变态青蛙跳:一次1节或2节或…或n节;
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
class Solution {public: int jumpFloorII(int number) { //number=1;f(1)=1 //number=2;f(2)=2 //number=3;f(3)=f(1)+f(2)+1 //number=n;f(n)=f(1)+f(2)+....+f(n-1)+1 //f(n)=2^(n-1) int res=1; for(int i=1;i<number;++i) { res*=2; } return res; }};
4、矩形覆盖:
可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
class Solution {public: int rectCover(int number) { //仍旧是fibonacci问题 if(number<=2) return (number<=1)?(number==1?1:0):2; int op1=1; int op2=2; int res=0; for(int i=3;i<=number;++i) { res=op1+op2; op1=op2; op2=res; } return res; }};
0 0
- 剑指offer--循环递归
- 剑指offer-递归和循环
- 剑指offer: 矩形覆盖(循环与递归)
- 剑指offer 算法 (递归与循环)
- 《剑指Offer》递归和循环—
- 【剑指offer】递归循环两种方式反转链表
- 剑指offer:跳台阶(循环和递归)
- 剑指offer: 变态跳台阶(循环与递归)
- 剑指offer 9题 【递归和循环】 跳台阶
- 《剑指Offer》递归和循环——跳台阶
- 《剑指Offer》递归和循环——矩形覆盖
- 【剑指offer】递归循环两种方式反转链表
- 剑指offer:(9)递归和循环:变态跳台阶
- 【剑指offer】【斐波那契数列 】递归还是循环
- 剑指Offer:递归问题
- 剑指offer 2.4 递归和循环-斐波那契数列计算改进
- 《剑指offer》:[12]递归与循环-斐波那契数列
- 【剑指offer】斐波那契数列--递归及循环剖析
- ubuntu 中文变成小方框 口
- maven
- Android通过HttpURLConnection与HttpClient联网代理网关设置
- Web_JavaScript_JS随记:分页组件;
- n个骰子的点数以及出现概率
- 剑指offer--循环递归
- 自动替换输入的字符
- ActionBar黑色阴影渐变效果
- iOS推送与角标总结
- 装机员Ghost一键备份还原使用方法(硬盘装系统)
- android 6.0 权限授权
- golang: Baa框架文章列表
- 开源搜索引擎HubbleDotNet图解之基础使用
- JavaScript的继承--概述