------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
第2题:求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
这道题起初困扰过一段时间,想不明白这个数列的前两项怎么出现,后来想到可以直接将数列的前两项初始化出来(囧)……于是问题就迎刃而解了。
思路:首先观察这个数列,我们可以得到一个规律从数列的第三项开始,每个元素都是前两个元素的值相加的和,其实这就是解决这道题的切入点。
得到步骤:
1.初始化两个int值a=1,b=1 这就是斐波那契数列的前两项
2.第三项为2,是前两项的和 于是可以定义一个sum=a+b
3.第四项为3,是1和2的和 可以将sum赋值给a,此时a=2,sum=a+b=3
4.第五项为5,是2和3的和 那么b=a+b 再将b的值赋值给sum 打印出来的sum就是5
……
5.以上规律可以用循环来实现
//这是一种方法,每次打印数列中的两项数值
public static void main(String[] args) {
int a=1,b=1;
System.out.println(a);//数列第一项
System.out.println(b);//数列第二项
for (int n = 2; n < 30; ) {
//定义一个sum,并将a和b的和赋给sum
int sum=a+b;
//打印当前sum值
System.out.println(sum);
n++;//计数器加1
if (n==29) {//循环运行到某次时,此处的n一定会等于29,此时就可以结束循环了
break;
}
//再将sum赋值给a,方便计算下一个sum
a=sum;
//重新给b赋值,得到的是前两项的和
b=a+b;
//再将b赋值给sum
sum=b;
//打印当前sum值
System.out.println(sum);
n++;//计数器再加1
}
}
//这是另一种方法,每次打印数列的一项值,但大致思路和上一种方法是一样的
/**public static void main(String[] args) {
int a=1, b=1 ;
System.out.println(a);
System.out.println(b);
for(int n=3;n<30;n++){
System.out.println(a+b);
int c=a;
a=b;
b=c+b;
}
}*/
}
第2题:求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
这道题起初困扰过一段时间,想不明白这个数列的前两项怎么出现,后来想到可以直接将数列的前两项初始化出来(囧)……于是问题就迎刃而解了。
思路:首先观察这个数列,我们可以得到一个规律从数列的第三项开始,每个元素都是前两个元素的值相加的和,其实这就是解决这道题的切入点。
得到步骤:
1.初始化两个int值a=1,b=1 这就是斐波那契数列的前两项
2.第三项为2,是前两项的和 于是可以定义一个sum=a+b
3.第四项为3,是1和2的和 可以将sum赋值给a,此时a=2,sum=a+b=3
4.第五项为5,是2和3的和 那么b=a+b 再将b的值赋值给sum 打印出来的sum就是5
……
5.以上规律可以用循环来实现
下面是详细代码:
//这是一种方法,每次打印数列中的两项数值
public static void main(String[] args) {
int a=1,b=1;
System.out.println(a);//数列第一项
System.out.println(b);//数列第二项
for (int n = 2; n < 30; ) {
//定义一个sum,并将a和b的和赋给sum
int sum=a+b;
//打印当前sum值
System.out.println(sum);
n++;//计数器加1
if (n==29) {//循环运行到某次时,此处的n一定会等于29,此时就可以结束循环了
break;
}
//再将sum赋值给a,方便计算下一个sum
a=sum;
//重新给b赋值,得到的是前两项的和
b=a+b;
//再将b赋值给sum
sum=b;
//打印当前sum值
System.out.println(sum);
n++;//计数器再加1
}
}
//这是另一种方法,每次打印数列的一项值,但大致思路和上一种方法是一样的
/**public static void main(String[] args) {
int a=1, b=1 ;
System.out.println(a);
System.out.println(b);
for(int n=3;n<30;n++){
System.out.println(a+b);
int c=a;
a=b;
b=c+b;
}
}*/
}