A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孤叶飘城 中级黑马   /  2015-10-20 10:58  /  1447 人查看  /  28 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何用for语句实现下列语句;
0 1 2 3 5 8 13 21 34 55 89........求大神指点 刚学java

28 个回复

倒序浏览
你这是无限死循环啊  要有个范围比较好
回复 使用道具 举报

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+" ");
                        }
                }

        }

}
回复 使用道具 举报
1,1,2,3,5,8。。。输出这个就行了吧。只要改两个特殊情况
回复 使用道具 举报
这不是那个什么费罗列什么数列吗
回复 使用道具 举报
QiChen 来自手机 中级黑马 2015-10-20 12:38:30
地板
这个吊……………………
回复 使用道具 举报
/*
如何用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;                                                                                                                //跳出循环  
                        }
                }
        }
}
回复 使用道具 举报
DaYe 发表于 2015-10-20 11:49
public class Number {

       

你这个应该是按照数学思路来的吧  
回复 使用道具 举报
/*
如何用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:06
10#
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]+"  ");
                                }
                                       
                        }

再加上溢出判断
回复 使用道具 举报
JYcainiao 发表于 2015-10-20 11:40
你这是无限死循环啊  要有个范围比较好

谢谢大神帮忙!
回复 使用道具 举报
没到这水平
回复 使用道具 举报
syb012 中级黑马 2015-10-20 18:09:31
13#
我的想法是:先放到一个数组里面,然后在累加。数列的话会有特定的表达式把,先找到那个表达式。
回复 使用道具 举报
斐波那数列 的头一位是1 这个是O
回复 使用道具 举报
斐波那数列的头一位是0 这个是1
回复 使用道具 举报
ksh 中级黑马 2015-10-20 19:44:50
16#
变相的   斐波那契 数列,  前两个数除外,然后从第三个数开始,后面的数等于前面两个数之和
回复 使用道具 举报
DaYe 中级黑马 2015-10-21 19:09:52
17#
JYcainiao 发表于 2015-10-20 13:51
你这个应该是按照数学思路来的吧

恩恩,我还是个小白只能想到这里了
回复 使用道具 举报
ksh 发表于 2015-10-20 19:44
变相的   斐波那契 数列,  前两个数除外,然后从第三个数开始,后面的数等于前面两个数之和 ...

谢谢你的帮助!
回复 使用道具 举报
牛逼的帖 顶~~~~~~~~~~~~~~~~~~~
回复 使用道具 举报
jyf823691221 发表于 2015-10-21 21:18
牛逼的帖 顶~~~~~~~~~~~~~~~~~~~

谢谢支持!共同学习共同进步!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马