斐波拉契數列
阿新 • • 發佈:2021-07-29
求取斐波拉契數列第N位的值
斐波拉契數列:每一位的值等於他前兩位數字的和。前兩位固定
0、1、1、2、3、5、8、13...
public class Fib { public static void main(String[] args) { System.out.println(calculate1(10)); System.out.println(calculate2(10)); System.out.println(calculate3(10)); } //暴力遞迴 public static int calculate1(int num){ if (num==0){ return 0; } if (num==1){ return 1; } return calculate1(num-1)+calculate1(num-2); } //改進 public static int calculate2(int num){ int[] arr = new int[num+1]; return recurse(arr,num); } private static int recurse(int arr[],int num){ if (num==0){ return 0; } if (num==1){ return 1; } if(arr[num] != 0){ return arr[num]; } arr[num] = recurse(arr,num-1)+recurse(arr,num-2); return arr[num]; } //雙指標 public static int calculate3(int num){ int low=0,high=1; if (num==0){ return 0; } if (num==1){ return 1; } for (int i=1;i<num;i++){ int sum = low+high; low = high; high = sum; } return high; } }