黑马程序员技术交流社区

标题: java中for循环问题请教! [打印本页]

作者: 孤叶飘城    时间: 2015-10-20 10:58
标题: java中for循环问题请教!
如何用for语句实现下列语句;
0 1 2 3 5 8 13 21 34 55 89........求大神指点 刚学java


作者: JYcainiao    时间: 2015-10-20 11:40
你这是无限死循环啊  要有个范围比较好
作者: DaYe    时间: 2015-10-20 11:49

public class Number {

       
        public static void main(String[] args) {
               
               
                int j=0,g = 1,h;
                System.out.println(j+" ");
                for(int i=1;i<100;){
                        if(j == 0){
                                System.out.println(i+" ");
                                j++;
                        }
                        else {
                                i=g+j;
                                h=g;
                                g=i;
                                j=h;
                                System.out.println(i+" ");
                        }
                }

        }

}

作者: 格子伞    时间: 2015-10-20 12:17
1,1,2,3,5,8。。。输出这个就行了吧。只要改两个特殊情况
作者: fmi110    时间: 2015-10-20 12:29
这不是那个什么费罗列什么数列吗
作者: QiChen    时间: 2015-10-20 12:38
这个吊……………………
作者: JYcainiao    时间: 2015-10-20 13:50
/*
如何用for语句实现下列语句;
0 1 2 3 5 8 13 21 34 55 89........
b1                b2                 b3                   b4
0                  1                 2                     3  b2  + b3
1 取上级的B2        2 取上级的B3      3 取上级的B4          5  b2  + b3
2 取上级的B2                    3 取上级的B3      5 取上级的B4          8  b2  + b3


思路
  这串字符 是后一个等于前两个的和  
*/


class Demo_For {
        public static void main(String[] args) {
                System.out.print("0,1,2,3,5");                 
                for ( int b1 = 0,b2 = 1,b3 = 2,b4 = 0; b4 < 300; b3 = b4) {                        //b3循环一次 获取下一次b4的值
                        for (  b4 = b3 + b2 ; b4 < 300; ) {                                                                //b4获取 b3 + b2的值
                                b2 = b3;                                                                                                        //b2循环一次  获取b3的值  因为每次b2都是获取b3的值  所以循环条件应该是获取上次循环的值  应该跳出循环
                                if (b4  < 2000) {
                                        System.out.print("," + b4);
                                }else {
                                        System.out.println("超出范围");
                                }
                                break;                                                                                                                //跳出循环  
                        }
                }
        }
}

作者: JYcainiao    时间: 2015-10-20 13:51
DaYe 发表于 2015-10-20 11:49
public class Number {

       

你这个应该是按照数学思路来的吧  
作者: JYcainiao    时间: 2015-10-20 13:56
/*
如何用for语句实现下列语句;
0 1 2 3 5 8 13 21 34 55 89........
b1                b2                 b3                   b4
0                  1                 2                     3  b2  + b3
1 取上级的B2        2 取上级的B3      3 取上级的B4          5  b2  + b3
2 取上级的B2                    3 取上级的B3      5 取上级的B4          8  b2  + b3


思路
  这串字符 是后一个等于前两个的和  
*/


class Demo_For {
        public static void main(String[] args) {
                System.out.print("0,1,2,3,5");                 
                int Max = 100;                                                                                                                //定义输出的最大值
                for ( int b1 = 0,b2 = 1,b3 = 2,b4 = 0; b4 < Max; b3 = b4) {                        //b3循环一次 获取下一次b4的值
                        for (  b4 = b3 + b2 ; b4 < Max; ) {                                                                //b4获取 b3 + b2的值
                                b2 = b3;                                                                                                        //b2循环一次  获取b3的值  因为每次b2都是获取b3的值  所以循环条件应该是获取上次循环的值  应该跳出循环
                                if (b4  < Max) {
                                        System.out.print("," + b4);
                                }else {
                                        System.out.println("超出范围");                                       
                                }
                                break;                                                                                                                //跳出循环  
                        }
                }
        }
}

作者: jlq    时间: 2015-10-20 14:08
int[] arr=new int[102];
                        for(int i=0;i<100;i++){
                                if(i==0||i==1||i==2){
                                        arr[i]=i;
                                        System.out.print(arr[i]+"  ");
                                }       
                                else{
                                        arr[i]=arr[i-1]+arr[i-2];
                                        System.out.print(arr[i]+"  ");
                                }
                                       
                        }

再加上溢出判断
作者: 孤叶飘城    时间: 2015-10-20 15:28
JYcainiao 发表于 2015-10-20 11:40
你这是无限死循环啊  要有个范围比较好

谢谢大神帮忙!
作者: 叶发伟    时间: 2015-10-20 16:52
没到这水平
作者: syb012    时间: 2015-10-20 18:09
我的想法是:先放到一个数组里面,然后在累加。数列的话会有特定的表达式把,先找到那个表达式。
作者: doudou966    时间: 2015-10-20 18:21
斐波那数列 的头一位是1 这个是O
作者: doudou966    时间: 2015-10-20 18:22
斐波那数列的头一位是0 这个是1
作者: ksh    时间: 2015-10-20 19:44
变相的   斐波那契 数列,  前两个数除外,然后从第三个数开始,后面的数等于前面两个数之和
作者: DaYe    时间: 2015-10-21 19:09
JYcainiao 发表于 2015-10-20 13:51
你这个应该是按照数学思路来的吧

恩恩,我还是个小白只能想到这里了
作者: 孤叶飘城    时间: 2015-10-21 21:06
ksh 发表于 2015-10-20 19:44
变相的   斐波那契 数列,  前两个数除外,然后从第三个数开始,后面的数等于前面两个数之和 ...

谢谢你的帮助!
作者: jyf823691221    时间: 2015-10-21 21:18
牛逼的帖 顶~~~~~~~~~~~~~~~~~~~
作者: 孤叶飘城    时间: 2015-10-21 21:21
jyf823691221 发表于 2015-10-21 21:18
牛逼的帖 顶~~~~~~~~~~~~~~~~~~~

谢谢支持!共同学习共同进步!
作者: 307117758    时间: 2015-10-21 21:53
斐波那契数列,顶!
作者: 逝风    时间: 2015-10-21 22:24
class Number
{
        public static void main(String[] args){
                for (int x=0,y=1,z=1;z<1000 ; )
                {       
                        if (x==0)
                        {
                                z=0;
                                System.out.println(z);

                        }
                        z=x+y;
                        x=y;
                        y=z;
                        System.out.println(z);
                }
       
                       
                               
        }
}

作者: 逝风    时间: 2015-10-21 22:25
逝风 发表于 2015-10-21 22:24
class Number
{
        public static void main(String[] args){

不知道  符不符合你的意思哈   你可以试试{:2_32:}
作者: 孤叶飘城    时间: 2015-10-22 21:59
逝风 发表于 2015-10-21 22:25
不知道  符不符合你的意思哈   你可以试试

好的‘!谢谢了,共同学习!加油
作者: lkjmnbqwe    时间: 2015-10-22 22:21
天啊  我完全看不懂
作者: 如梦丶似幻    时间: 2015-10-22 22:37
前来学习~~
作者: 孤叶飘城    时间: 2015-10-28 21:32
如梦丶似幻 发表于 2015-10-22 22:37
前来学习~~

同学习!同进步!加油!
作者: 我若为神    时间: 2015-10-28 21:46
这是斐波拉契数列,使用递归最高效,
作者: 月明    时间: 2015-10-29 00:29
这个用递归实现比较简单 规律是从第三个数开始等于前两个数相加 出口是当等于1或2
num为第几个数 返回等于多少
public int number(int num){
  if(num==1||num==2){
     return 1;
}else{
   return number(num-1)+number(num-2);
}
}




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