Java斐波那契數列非遞迴(迭代)與遞迴實現
阿新 • • 發佈:2020-12-07
問題描述
斐波那契數列指的是這樣一個數列:
1,1,2,3,5,8,13,21…
這個數列從第3項開始,每一項都等於前兩項之和。
設an為該數列的第n項(),那麼這句話可以寫成如下形式:
遞迴實現
import java.util.Scanner; public class java1206 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); System.out.println(fib(num)); } public static int fib(int n) { if (n == 1 || n == 2) { return 1; } return fib(n - 1) + fib(n - 2); } }
非遞迴
import java.util.Scanner; public class java1206 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); System.out.println(fib(num)); } public static int fib(int n) { int last1 = 1; int last2 = 1; int cur = 0; for (int i = 3; i <= n; i++) { cur = last1 + last2; last2 = last1; last1 = cur; } return cur; } }