使用递归和非递归方式实现fibonacci数列
import java.io.*;
public class Fibonacci
{
public static int sum(int n)
{
if( (n ==1)||(n == 2) ) return 1;
else return sum(n - 1)+sum(n-2);
}
public static void main(String args[])
{
int result = 0;
String str;
int num = 0;
long begin = 0l;
long end = 0l;
System.out.println("Please input a num");
try
{
DataInputStream in = new DataInputStream(System.in);
str = in.readLine();
num = Integer.parseInt(str);
}
catch(Exception e){}
result = sum(num);
begin= System.currentTimeMillis();
System.out.println("sum="+result);
end = System.currentTimeMillis();
System.out.println(" spend time: " + (end - begin));
}
}
//以上是一个可以从命令行输入的Fibonacci程序
public class FibonacciMain {
public static void main(String[] args) {
int num = 40;
long begin = 0l;
long end = 0l;
begin= System.currentTimeMillis();
System.out.print("Number "+num+" fibonacci value -> " +finnonacciTraversal(num));
end = System.currentTimeMillis();
System.out.println(" spend time: " + (end - begin));
begin = System.currentTimeMillis();
System.out.print("Number "+num+" fibonacci value -> " +fibonacciRecursive(num));
end = System.currentTimeMillis();
System.out.println(" spend time: " + (end - begin));
}
/**
* 使用递归实现fibonacci数列
* @param count 获取第count结果
* @return
*/
public static int fibonacciRecursive(int count){
if(count == 1 || count == 2) {
return 1;
}else {
int temp = fibonacciRecursive(count-1)+fibonacciRecursive(count-2);
return temp;
}
}
/**
* 使用遍历的方式生成fibonacci数列
* @param 获取第count结果
* @return
*/
public static int finnonacciTraversal(int count) {
int f2 = 1;
int f1 = 1;
int temp = 0;
for(int i=2;i<count;i++) {
temp = f2;
f2 = f1 + f2;
f1 = temp;
}
return f2;
}
}