正如我们所知道的, Fibonacci定义了一个数列, 那么数列中的每个数都等于它前两个数的和(除了数列的前两个数), 举例来说:1, 1, 2, 3, 5, 8, 13, 21, 34,...等等.
要求:
1)在Java中实现两个函数来生成第n位的Fibonacci数:fibo1和fibo2. 这两个函数都接受一个整型参数n并且返回第n位的Fibonacci数.请使用递归来实现fibo1, 使用循环实现fibo2.
要求:
1)在Java中实现两个函数来生成第n位的Fibonacci数:fibo1和fibo2. 这两个函数都接受一个整型参数n并且返回第n位的Fibonacci数.请使用递归来实现fibo1, 使用循环实现fibo2.
解决方案 »
- j2se程序,读取并下载一个网页,返回不是html,是乱码。怎么解决?
- Hql语句问题!
- 今天面试不理想,有些面试题,大家给点答案吧
- 3.9898/4=0.99745,为什么(3.9898/4)*100=99.74499999999999,类型为double,有程序
- sping 迷茫 熟悉spring的给点提示
- 请问JAVA水平问题~
- 把java程序做成bat文件时出现了的问题。
- 请问throw 跳转和if else跳转的区别..在实际应用中?哪个更实际?
- 各位大侠:我有一个2M左右的只有一行的纯文本文件,要怎么读?
- android应用程序执行shell脚本
- 放分讨论问题,java3d持久化开发
- 一道面试题,弱引用(weakReference)和softReference有什么区别?
{ int a=1,b=1;
for(int i =2;i< n ;i+=2)
{
a = a + b;
b = b + a;
}
if( n %2 == 0)
return b;
else
return a;
}
int fibo2(int n)
{
int re;
if(n>2)
re= fibo2(n-1) + fibo2( n -2);
else
re = 1; return re;
}
fibo2(n-1) + fibo2( n -2);
如果传入的n>2;
则fibio2(3) to fibio2(n-2)都会被计算辆次
如果给的n值太大的话很容易造成栈满
大家看看下面的代码:
public static long fibo2(int n)
{
if(n<=2)
return 1;
else
{
long []fibo=new long[n];
fibo[0]=1;
fibo[1]=1;
for(int i=2;i<n;i++)
{
fibo[i]=fibo[i-1]+fibo[i-2];
}
return fibo[n-1];
}
}
Fn = 1/sqrt(5)*( ((1+sqrt(5))^(n+1)-((1-sqrt(5))/2)^(n+1) )