博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer青蛙跳台阶问题
阅读量:6503 次
发布时间:2019-06-24

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

(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。
567993-20160316202248381-1919243792.png
//递归方式 

 
  1. public static int f(int n) {
  2. //参数合法性验证
  3. if (n < 1) {
  4. System.out.println("参数必须大于1!");
  5. System.exit(-1);
  6. }
  7. if (n == 1 || n == 2) return 1;
  8. else return f(n - 1) + f(n - 2);
  9. }

//非递归方式 
 
  1. public static int fx(int n) {
  2. //参数合法性验证
  3. if (n < 1) {
  4. System.out.println("参数必须大于1!");
  5. System.exit(-1);
  6. }
  7. //n为1或2时候直接返回值
  8. if (n< 2) return 1;
  9. //n>2时候循环求值
  10. int res = 0;
  11. int a = 1;
  12. int b = 1;
  13. for (int i = 2; i <= n; i++) {
  14. res = a + b;
  15. a = b;
  16. b = res;
  17. }
  18. return res;
  19. }
(2)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?

       当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

 递归等式如下:

 
567993-20160316202248803-1552137444.gif
     
 
  1. if(number<2)return 1;
  2. //n>2时候循环求值
  3. int res = 0;
  4. int a = 1;
  5. for (int i = 2; i <= number; i++) {
  6. res = 2*a;
  7. a= res;
  8. }
  9. return res;

转载于:https://www.cnblogs.com/zhxshseu/p/5284975.html

你可能感兴趣的文章
matlab里面连接器是什么,Oops - an error has occurred
查看>>
matlab建立桌面图标,在ubuntu16.04上创建matlab的快捷方式(实现方法)
查看>>
smarty使用php代码,笑谈配置,使用Smarty技术_php
查看>>
oracle数据实际值限制,c# – Oracle数据库TNS密钥“数据源”的值长度超过了’128’的限制...
查看>>
silk v3 decoder php,解码转换QQ微信的SILK v3编码音频为MP3或其他格式
查看>>
linux不能访问80端口,lunux开放80端口(本地访问不了linux文件可能是这个原因)...
查看>>
android单位转换小程序,微信小程序中rpx与rem单位转换
查看>>
ps切图教程 android,PS前端切图完整教程
查看>>
html显示服务器状态,显示服务器时间并一直显示(html代码)
查看>>
在线html代码优化,网站seo优化html代码方法
查看>>
HTML如何把输入框变成必填值,required输入框为必填项
查看>>
html定位有几种,POSITION定位有哪几种?各有什么特点?
查看>>
背锅侠逆袭之路
查看>>
演示:使用协议分析器取证IPv6的报文结构
查看>>
oracle 11gr2 rac中的4种IP解说
查看>>
为什么你找不到工作?
查看>>
20 个免费的 jQuery 的工具提示插件:
查看>>
汇编语言的应用
查看>>
device platform 相应的表
查看>>
php des 加密解密实例
查看>>