黑马程序员技术交流社区
标题:
求解决
[打印本页]
作者:
知识改变人生
时间:
2015-4-10 23:01
标题:
求解决
1,2 ,3,5,8,13,21....
第100个数是多少
作者:
星之钥匙
时间:
2015-4-10 23:15
1298777728820984005
作者:
星之钥匙
时间:
2015-4-10 23:17
这是代码,你看对不对啊 public class test2 { public static void main(String[] args) { long [] i=new long[100]; i[0]=1; i[1]=2; for(int j=2;j<100;j++) { i[j]=i[j-1]+i[j-2]; } System.out.println(i[99]); } }
作者:
夜班心桥
时间:
2015-4-10 23:27
由这几个数字,发现规律,从第三项起,每一项是前两项的和。所以,可以考虑使用递归的思想来做。
class NumberTest
{
public static void main(String[] args)
{
//这个数会越来越大,所以定义为long类型,
//还是很有可能超出范围。
long result = show(40);
System.out.println(result);
}
//从第三项开始,每一项,都是前两项的和
private static long show(long n)
{
if(n == 1)
return 1;
else if(n == 2)
return 2;
else
return show(n-1) + show(n-2);
}
}
复制代码
作者:
sisel
时间:
2015-4-10 23:39
斐波那契 。。。。推荐使用BigInteger,不然很快会爆
作者:
sisel
时间:
2015-4-10 23:43
楼上的方法 递归很简洁
但是效率不高,可以添加变量展开为一次for;
作者:
thoris
时间:
2015-4-11 00:02
想不到那么大 一下子就溢出了。。。
作者:
thoris
时间:
2015-4-11 00:07
a[100]=5.731478440138172E20
设置的是double数列, 因为楼主的a1是1,a2是2,所以第100应该是这个。
作者:
xlunaer
时间:
2015-4-11 13:45
建议使用迭代而不是递归,递归的速度随着调用次数成指数反比,下面是我写的,用迭代方式实现:
public class Test3 {
public static void main(String[] args) {
// 获取斐波那契数列第十项
int n = 10;
// 获取并输出值
System.out.println("斐波那契数列第" + n + "项为: " + fibo(n));
}
public static int fibo(int n) {
// 定义临时变量
int temp1 = 1;
int temp2 = 1;
int temp3 = 1;
if (n < 1) {
System.out.println("输入值小于1");
return -1;
} else if (n > 2) {
int i = 2;
while (i < n) {
//迭代存储当前值 和前两项值
temp3 = temp1 + temp2;
temp1 = temp2;
temp2 = temp3;
i++;
}
}
return temp3;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2