java代码--Fibonacci数列(递归与非递归效率)

来源:互联网 发布:淘宝上架宝贝无商标 编辑:程序博客网 时间:2024/05/18 11:41

程序名称:Fibonacci.java

程序内容:

package firststudy;/** * 计算 Fibonacci 数列的 第40个值 * 即: 1,1,2,3,5,8.....第40个值. * 满足递推公式: F1 = 1, F2 = 1, Fn = F (n-1) + F (n-2) * @author web * */public class Fibonacci {public static void main(String[] args) {int num = 40;long startTime = System.currentTimeMillis();for(int i=1; i<=num; i++) {System.out.print(method(i) + "\t");if(i % 5 == 0) {System.out.println();}}long endTime = System.currentTimeMillis();long time = endTime - startTime;System.out.println("递归用时:" + time + "毫秒");startTime = System.currentTimeMillis();for(int i=1; i<=num; i++) {System.out.print(method1(i) + "\t");if(i % 5 == 0) {System.out.println();}}endTime = System.currentTimeMillis();time = endTime - startTime;System.out.println("非递归用时:" + time + "毫秒");startTime = System.currentTimeMillis();System.out.println(method(num));endTime = System.currentTimeMillis();time = endTime - startTime;System.out.println("递归用时:" + time + "毫秒");startTime = System.currentTimeMillis();System.out.println(method1(num));endTime = System.currentTimeMillis();time = endTime - startTime;System.out.println("非递归用时:" + time + "毫秒");}/** * 递归方式 * @param num * @return */public static long method(int num) {if(num == 1 || num == 2) {return 1;}else {return method(num-2) + method(num-1);}}/** * 非递归方式 */public static long method1(int num) {if(num == 1 || num == 2) {return 1;}long f1 = 1L;long f2 = 1L;long f = 0;for(int i=0; i<num-2; i++) {f = f1 + f2;f1 = f2;f2 = f;}return f;}}

运行结果:

0 0
原创粉丝点击