黑马程序员技术交流社区

标题: 求输出斐波那契序列算法 [打印本页]

作者: Akm    时间: 2013-5-23 14:03
标题: 求输出斐波那契序列算法
本帖最后由 Akm 于 2013-5-24 07:01 编辑

描述:输出斐波那契序列
输出: 1 2 3 5 8 13 21 34
要求:使用循环
提示:  前两个数相加和是第三个数字。


楼下的答案都很给力啊





作者: 薛淑凯    时间: 2013-5-23 14:09
百度上很多的、、应该是0,1,1,2,3,5...
作者: 陈潜    时间: 2013-5-23 14:41
public class Demo{
       
        public static void main(String[] args) {
                //需求 找到100内的斐波那契序列
                //定义一个数组
                int[] number = new int[100];
                for(int i = 1;i<101;i++){
                        number[i-1] = i;
                }
               
                //定义存储集合
                ArrayList<Integer> result = new ArrayList<Integer>();
                //开始循环
                for(int i = 0;i<100;i++){
                        //先输出前两个数
                        if(i==0 || i==1){
                                result.add(number[i]);
                                continue;
                        }else{
                                if((number[i] == result.get(result.size()-1)+result.get(result.size()-2))){//前两个数相加和是第三个数字。
                                        result.add(number[i]);
                                }
                        }
                }
                System.out.println(result);
        }
}
作者: 无妄无涯    时间: 2013-5-23 14:56
这样应该就行了。
  1. public class Fibonacci {
  2.         static int fib(int n) {
  3.                 if(n < 2) return 1;
  4.                 return (fib(n - 2) + fib(n - 1));
  5.         }
  6.         public static void main(String[] args) {
  7.                 int k = 10;
  8.                 System.out.println("First " + k + " Fibonacci number(s): ");
  9.                 for(int i = 0; i < k; i++)
  10.                         System.out.print(fib(i)+"\t");
  11.         }       
  12. }
复制代码

作者: Sword    时间: 2013-5-23 15:01
用了一下递归调用,代码如下:
  1. public class Fib_ra {

  2.         // 使用递归方法
  3.         private static int getFibo(int i) {
  4.                 if (i == 1 )
  5.                         return 1;
  6.                 if (i == 2)
  7.                         return 2;
  8.                 else
  9.                         return getFibo(i - 1) + getFibo(i - 2);
  10.         }

  11.         public static void main(String[] args) {
  12.                 System.out.println("斐波那契数列为:");
  13.                 for (int j = 1; j <= 8; j++) {
  14.                         System.out.print(getFibo(j) + "\t");
  15.                        
  16.                 }
  17.         }

  18. }
复制代码
打印的结果为:

斐波那契数列为:
1        2        3        5        8        13        21        34

作者: 无妄无涯    时间: 2013-5-23 16:02
Sword 发表于 2013-5-23 15:01
用了一下递归调用,代码如下:打印的结果为:

斐波那契数列为:

版主,我只想说为什么我的很多回答都没给技术分?我不想为了两个技术分卡着不能进行下一步测试,同时,我也不想纯粹为挣技术分而问问题。
作者: HM张博文    时间: 2013-5-23 16:19
无妄无涯 发表于 2013-5-23 16:02
版主,我只想说为什么我的很多回答都没给技术分?我不想为了两个技术分卡着不能进行下一步测试,同时,我 ...

那是因为你没有贿赂版主啊
作者: 无妄无涯    时间: 2013-5-23 16:50
HM张博文 发表于 2013-5-23 16:19
那是因为你没有贿赂版主啊

你太腹黑了,如果我是版主,直接就回“ID还想要吗?”{:3_68:}
作者: Sword    时间: 2013-5-23 16:56
本帖最后由 Sword 于 2013-5-23 18:25 编辑
无妄无涯 发表于 2013-5-23 16:02
版主,我只想说为什么我的很多回答都没给技术分?我不想为了两个技术分卡着不能进行下一步测试,同时,我 ...

你可以把应该加分的帖子反映到这里,符合加分规则一定会加的:
http://bbs.itheima.com/thread-50255-1-1.html

也可能是斑竹们还没有看到,着这里表示一下歉意,请理解一下,谢谢:)

我看了一下你的回帖,只要是合理的基本都加上技术分了(最近几个小时的除外),有些回答的太简单或者不符合加分要求就没有加。

希望你仔细看一下上面技术分的集中处理贴,谢谢合作
作者: Sword    时间: 2013-5-23 16:56
HM张博文 发表于 2013-5-23 16:19
那是因为你没有贿赂版主啊

不用,不用,只要符合规则都会给加分的,哈哈
作者: eycrckag    时间: 2013-5-23 18:17
int sum(int n){
if(n==1) return 1;
else if(n==2) return 1;
else if(n>=3) return sum(n-1)+sum(n-2);
}
作者: 陈潜    时间: 2013-5-23 20:38
陈潜 发表于 2013-5-23 14:41
public class Demo{
       
        public static void main(String[] args) {

没有开大啊。。前面一个只是说在1到100内找这个序列 后面的ArrayList才是用来存序列的。。。。
作者: 刘胜寒    时间: 2013-5-24 00:53
就在本帖回。。要求你看到了把不能使用long 类型的和BigDecimal BigInteger. 三分啊哥们,加油
作者: 袁梦希    时间: 2013-5-24 00:56
楼主你好,如果问题以解决,请修改分类,谢谢合作。
作者: 陈潜    时间: 2013-5-24 01:36
刘胜寒 发表于 2013-5-24 00:53
就在本帖回。。要求你看到了把不能使用long 类型的和BigDecimal BigInteger. 三分啊哥们,加油 ...

。。寒哥 你真心看错了 我传入的一个数组是number[100],里面存放的是1到100,,我是要在100的范围内找出符合条件的序列,不是要找这个序列的100个。。。而我下面用了ArrayList 也是因为我不知道100以内这个 鸟序列 到底有几个数符合条件,不知道长度,所以没用固定长度的数组。
寒哥息怒~~~
息怒了来点分,最近急缺。。。。
作者: 陈潜    时间: 2013-5-24 01:37
早知道就直接找了  不传参了。。。。
作者: Akm    时间: 2013-5-26 18:15
薛淑凯 发表于 2013-5-23 14:09
百度上很多的、、应该是0,1,1,2,3,5...

是啊 是啊,  要求输出1 2 3 5 8 13 21 34 这几项而已, 比百度上的简单许多啊, 你会编吗?
作者: 张旺达    时间: 2013-5-26 19:19
算法还是不太明白~
作者: 薛淑凯    时间: 2013-5-26 22:03
Akm 发表于 2013-5-26 18:15
是啊 是啊,  要求输出1 2 3 5 8 13 21 34 这几项而已, 比百度上的简单许多啊, 你会编吗? ...

楼上的不是已经写的很好了。




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