leohxj
12/24/2012 - 7:15 AM

## 数列求和

``````/**
* 求FebonacciSequence数列
*/
import java.util.Scanner;

public class FibonacciSequenceSum {
public static void main(String[] args) {
long sum;

while (true) {

System.out.println("请输入数列的项数(输入-1结束)：");
Scanner sin = new Scanner(System.in);
int num = sin.nextInt();
if (num == -1) {
break;

} else {
long start = System.currentTimeMillis();
sum = getFibonacciSequenceSum(num);
long stop = System.currentTimeMillis();
long time = stop - start;
System.out.println("sum=" + sum + "\ntime=" + time);

}

}
while (true) {

System.out.println("请输入数列的项数(输入-1结束)：");
Scanner sin = new Scanner(System.in);
int num = sin.nextInt();
if (num == -1) {
break;

} else {
long start = System.currentTimeMillis();
sum = CallFibocacci(num);
long stop = System.currentTimeMillis();
long time = stop - start;
System.out.println("sum=" + sum + "\ntime=" + time);
}

}
}

public int getFebio(int n) {
int sum = 0;
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return getFebio(n - 1) + getFebio(n - 2);
}
}

private static long getFibonacciSequenceSum(int num) {
long num1 = 1;
long num2 = 1;
long temp = 0;
long sum = 0;
if (num == 1) {
sum = 1;
System.out.println(num1);
} else {
sum = num1 + num2;
System.out.print(num1 + "," + num2);
}
for (int i = 3; i <= num; i++) {
temp = num2;
num2 = num1 + num2;
num1 = temp;
sum += num2;
System.out.print("," + num2);

}
System.out.println();
return sum;
}

public static long fibonacci(int iNum)
{
if(iNum == 1) return 1;
if(iNum == 2) return 1;
return fibonacci(iNum - 1) + fibonacci(iNum - 2);
}

public static long CallFibocacci(int n)
{
long sum = 0;
for(int i = 1;i <= n; ++i)
{
long ltemp = fibonacci(i);
sum += ltemp;
System.out.println(ltemp + ",");
}
return sum;
}
}
``````