Java implementiert die Rekursion + Optimierung von Fibonacci-Sequenzgewalt

Gewalttätige Rekursion

public class Test {
    
    
    public static void main(String[] args) {
    
    
        for (int i = 0; i < 20; i++) {
    
    
            System.out.print(test(i) + ",");
        }
    }

    static int test(int a) {
    
    
        if (a == 0 || a == 1) return 1;
        return test(a - 1) + test(a - 2);
    }
}

Fügen Sie hier eine Bildbeschreibung ein

Rekursive Lösung mit Memo

public class Test {
    
    
    public static void main(String[] args) {
    
    
        int[] mono = new int[20];
        for (int i = 0; i < 20; i++) {
    
    
            System.out.print(test(mono, i) + "\t");
        }
    }

    static int test(int[] mono, int a) {
    
    
        if (a == 0 || a == 1) return 1;
        if (mono[a] != 0) return mono[a];
        return test(mono, a - 1) + test(mono, a - 2);
    }
}

Fügen Sie hier eine Bildbeschreibung ein

Iterative Lösung des dp-Arrays

import java.util.Arrays;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        int[] dp = new int[20];
        dp[0] = dp[1] = 1;
        for (int i = 2; i < 20; i++) {
    
    
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        System.out.println(Arrays.toString(dp));
    }
}

Fügen Sie hier eine Bildbeschreibung ein

Zustandskomprimierung basierend auf der iterativen Lösung des dp-Arrays

public class Test {
    
    
    public static void main(String[] args) {
    
    
        for (int i = 0; i < 20; i++) {
    
    
            System.out.print(test(i) + " ");
        }
    }

    static int test(int a) {
    
    
        if (a == 0 || a == 1) return 1;
        int pre = 1;
        int curr = 1;
        int sum;
        for (int i = 1; i < a; i++) {
    
    
            sum = pre + curr;
            pre = curr;
            curr = sum;
        }
        return curr;
    }
}

Fügen Sie hier eine Bildbeschreibung ein
Dies entspricht einer Reduzierung der Größe der DP-Tabelle von n auf 2

Ich denke du magst

Origin blog.csdn.net/y1534414425/article/details/109203891
Empfohlen
Rangfolge