黑马程序员技术交流社区

标题: 关于斐波那契数列的简单算法,不用数组,不用递归 [打印本页]

作者: java8023    时间: 2015-6-10 23:36
标题: 关于斐波那契数列的简单算法,不用数组,不用递归
看到很多讨论斐波那契数列的,方法很多,我就用了一个既不是数列也不是递归的。
月份:1           2          3         4        5        6
对数;1           1         2         3        5        8
变量 a=0     a=1      a=1     a=2    a=3      a=5
        b=1     b=1     b=2     b=3    b=5     b=8
其中b作为每月兔子数,a作为一个临时变量

  1. <p>int a=0;
  2. int b=1;
  3. for(int i=1;i<=20;i++){
  4.              //那么i作为月份
  5.        b=b+a;//这一个月的b等于上个月b+a
  6.        a=b-a;//然后将上个月的b赋值给这个月的a
  7. }              //此方法不好,思想不好理解。但是还是可以很好的计算</p><p>System.out.println(b);</p>
复制代码

这是不是很高效呢,没有数组,也没有递归,就是不大好理解,纯粹数学问题了

作者: pizhihui    时间: 2015-6-11 00:06
这个思路还可以,不过不太好想出来
作者: qian0217wei    时间: 2015-6-11 00:44
感觉这个方法不容易想到,还是递归简单点!
作者: 15383016390    时间: 2015-6-11 06:01
想法不错,学习了
作者: a5231865    时间: 2015-6-11 06:48
呵呵,我也这么想的,不过用的是模交换2个数,其实很好理解啊, 一起独辟蹊径把~
作者: java8023    时间: 2015-6-11 20:56
qian0217wei 发表于 2015-6-11 00:44
感觉这个方法不容易想到,还是递归简单点!

就是啊,我也是一直用递归的,这个方法是基于数学推算的。不好理解但是计算速度快
作者: java8023    时间: 2015-6-11 20:59
a5231865 发表于 2015-6-11 06:48
呵呵,我也这么想的,不过用的是模交换2个数,其实很好理解啊, 一起独辟蹊径把~ ...

哈哈哈解决问题的方法很多,对于要求不高的地方,用哪个方法都是无可厚非的。但是对于要求运算速度和效率的地方就有的要求了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2