【剑指offer-JZ10】斐波那契数列

59 阅读1分钟

多种方法

import java.util.*;

public class Solution {

    // 递归
    public int Fibonacci2(int n) {
        if (n < 2) {
            return n;
        } else {
            return Fibonacci(n - 1) + Fibonacci(n - 2);
        }

    }

    // 动态规划
    public int Fibonacci1(int n) {
        if (n < 2) {
            return n;
        } else {
            int[] a = new int[n + 1];
            a[0] = 0;
            a[1] = 1;
            for (int i = 2; i <= n; i++) {
                a[i] = a[i - 1] + a[i - 2];
            }
            return a[n];
        }

    }

    // 最优方法:迭代
    public int Fibonacci(int n) {
        if (n < 2) {
            return n;
        } else {
            int pre = 1;
            int pre_pre = 0;
            int sum = 0;
            for (int i = 2; i <= n; i++) {
                sum = pre + pre_pre;
                pre_pre = pre;
                pre = sum;
            }
            return sum;
        }


    }

    public static void main(String[] args) {

        Solution s = new Solution();
        int intArray[][] = {{1, 2}};
        String str = "We Are Happy";
        int n = 2;
        int ans = s.Fibonacci(n);
        System.out.println(ans);
    }
}


题源:www.nowcoder.com/practice/c6…