博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
100-27
阅读量:6401 次
发布时间:2019-06-23

本文共 991 字,大约阅读时间需要 3 分钟。

hot3.png

27.跳台阶问题(递归)
题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。
求总共有多少总跳法,并分析算法的时间复杂度。
这道题最近经常出现,包括MicroStrategy等比较重视算法的公司

都曾先后选用过个这道题作为面试题或者笔试题。

思路:这道题,也是老题了。主要的思路是这样的。考虑在第n个台阶。如果想要到达第n个台阶,只有两种可能,要么从第n-1层台阶跳1级上来,要么从第n-2级台阶跳2级上来。所以,f(n)=f(n-1)+f(n-2);现在我们考虑f(1)=1,f(2)=2;这时,就会发现,这道题目与斐波那契数列比较像。只是初始条件不同罢了。

贴上代码:

/*===================================================*\第19题(数组、递归):题目:定义Fibonacci数列如下:  / 0 n=0f(n)= 1 n=1/ f(n-1)+f(n-2) n>=2输入n,用最快的方法求该数列的第n项。分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。因此很多程序员对这道题的递归解法非常熟悉,但....呵呵,你知道的。。\*===================================================*/#include 
using namespace std;int fibonacci(int n){ int first = 1; int second = 2; int ret = 0; if(1 == n){ return first; } if(2 == n){ return second; } int i = 3; while(i++ <= n){ ret = first + second; first = second; second = ret; } return ret;}int main(){ int n = 0; cin >> n; int ret = fibonacci(n); cout << "n = " << n << ": " << ret << endl; return 1;}

转载于:https://my.oschina.net/dapengking/blog/88048

你可能感兴趣的文章
性能测试工具 nGrinder 项目剖析及二次开发
查看>>
Mybatis集成pagehelper and jsqlparser(分页)
查看>>
50+ 顶级开源 Kubernetes 工具列表
查看>>
老年夫妇为何分床睡?83岁的奶奶是这样说的……
查看>>
恶意软件日均进攻百万次!三大方法保护Hadoop集群免遭攻击!
查看>>
小米品牌年度盛典今日开启 多款明星产品引爆抢购热潮
查看>>
猎豹智库Q3最新数据:ofo用户活跃渗透率连续领先摩拜 稳居第一
查看>>
手把手教你HDFS基础配置安装及命令使用!
查看>>
机器人索菲亚打算生儿育女,连孩子名字都想好了!
查看>>
中国最西北高寒铁路线铺就春运“平安路”
查看>>
春运将至 民航提前迎来客流高峰
查看>>
安徽:0.1元优粮优购的正效应
查看>>
Google发布机器学习开源可视化工具Facets
查看>>
仙气满满的霍尊竟然这么皮?自爆体重已经突破……
查看>>
十道简单算法题
查看>>
Vue(ES6)中的data属性为什么不能是一个对象?
查看>>
Java架构体系学习路线图,第六点尤为重要!
查看>>
浅析cookie和session
查看>>
OpenCV 3.0之后三年半,OpenCV 4.0出炉
查看>>
BCH升级在即,什么是Canonical Transaction Ordering Rule?(二)
查看>>