黑马程序员技术交流社区
标题: 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
你这个应该是按照数学思路来的吧
作者: 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
谢谢大神帮忙!
作者: 叶发伟 时间: 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
恩恩,我还是个小白只能想到这里了
作者: 孤叶飘城 时间: 2015-10-21 21:06
谢谢你的帮助!
作者: jyf823691221 时间: 2015-10-21 21:18
牛逼的帖 顶~~~~~~~~~~~~~~~~~~~
作者: 孤叶飘城 时间: 2015-10-21 21:21
谢谢支持!共同学习共同进步!
作者: 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
不知道 符不符合你的意思哈 你可以试试{:2_32:}
作者: 孤叶飘城 时间: 2015-10-22 21:59
好的‘!谢谢了,共同学习!加油
作者: lkjmnbqwe 时间: 2015-10-22 22:21
天啊 我完全看不懂
作者: 如梦丶似幻 时间: 2015-10-22 22:37
前来学习~~
作者: 孤叶飘城 时间: 2015-10-28 21:32
同学习!同进步!加油!
作者: 我若为神 时间: 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 |