PHP上台阶问题(斐波纳契数列应用)
2014-01-17 16:38
197 查看
PHP经典面试题(上台阶问题)
题目:
有个人想上一个50层的台阶,但他一次只能迈一层或两层台阶,问:这个人有多少种方法可以把台阶走完?
分析:先列举几个实例:1代表迈一层,2代表迈2层
一层:1
二层:11 2
三层:111 12 21
四层:1111 121 211 112 22
五层:11111 2111 1211 1121 1112 221 212 122
我们可以看到从第三层开始的走法等于上两层的走法之和,这个符合斐波纳契数列(斐波纳契数列指数列的第一项和第二项已知,那么后面的项等于前面两项的和,比如,第四
项=第三项+第二项)。我们可以这样理解,当我们走到50层的时候,最后他有两种到达50层的途径:
1. 从49层走一层,
2. 从48层走两层,
那么,到达50层所有的走法就等于到达49层的走法+到达48层的走法,依次类推,可以得到总的走法符合斐波纳契数列,知道了这,我们的代码也就好写了。
代码实现:
题目:
有个人想上一个50层的台阶,但他一次只能迈一层或两层台阶,问:这个人有多少种方法可以把台阶走完?
分析:先列举几个实例:1代表迈一层,2代表迈2层
一层:1
二层:11 2
三层:111 12 21
四层:1111 121 211 112 22
五层:11111 2111 1211 1121 1112 221 212 122
我们可以看到从第三层开始的走法等于上两层的走法之和,这个符合斐波纳契数列(斐波纳契数列指数列的第一项和第二项已知,那么后面的项等于前面两项的和,比如,第四
项=第三项+第二项)。我们可以这样理解,当我们走到50层的时候,最后他有两种到达50层的途径:
1. 从49层走一层,
2. 从48层走两层,
那么,到达50层所有的走法就等于到达49层的走法+到达48层的走法,依次类推,可以得到总的走法符合斐波纳契数列,知道了这,我们的代码也就好写了。
代码实现:
<?php function taijie($n){ $bf_1=2; //初始化前一项为2 $bf_2=1; //初始化前两项为1 $count=1; if($n==1){ return $bf_2; //如果当前是第一项显示为1 } elseif($n==2){ return $bf_1; //如果是第二项显示为2; } for($i=3;$i<=$n;++$i){ $count=$bf_1+$bf_2; //当前项为前一项+前两项 $bf_2=$bf_1; //下次循环前两项就变为前一项 $bf_1=$count; //下次循环当前项就变成了前一项 } return $count; } echo taijie(50); ?>
相关文章推荐
- 关于PHP大型网站应用的框架使用问题
- 【常见Web应用安全问题】---9、PHP code injection
- 谈PHP5.3闭包特性在实际应用中的问题
- 无法访问到该应用的备份接口,请拷贝 UCenter 根目录下api/dbbak.php 到该应用的api目录的问题
- 结合Rexsee、Jquery、PHP开发移动应用时的数据交互问题
- 关于Centos7下Apache服务器php应用phpMyAdmin无法正常运行的问题
- 全方位解疑PHP应用问题
- yourphp应用过程中的一些问题及解决方法
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- windows下用php开发类似百度文库应用需要的工具和问题
- php 应用乱码问题解决方法
- php生成静态html应用中的常见问题
- (2)斐波那契数列及其应用跳台阶问题
- PHP 闭包特性在实际应用中的问题
- 总结yourphp应用过程中的一些问题及解决方法
- 关于thinkphp应用配置config.php无法加载的问题解决办法
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- 浅谈PHP 闭包特性在实际应用中的问题
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- PHP截取汉字乱码问题解决方法mb_substr函数的应用