一种求解卡塔兰数(Catalan Number)的非递归算法

    最近学习了一些有关卡塔兰数的知识,但发现网上大多数求解算法都是采用递归的形式。

对于这个问题,递归形式求救算法的时间复杂度是指数形式的O(2^n),怎么才能消除递归呢?在

算法导论中的第15章有所涉及,根据书中的思想编写了如下算法:

    public static int catalanNumber(int n){
        int[] arr=new int[n+1];
        arr[1]=1;
        for(int i=2;i<n+1;i++){
            arr[i]=0;
            for(int j=1;j<i;j++)
                arr[i]+=arr[j]*arr[i-j];
        }
        return arr[n];
    }

算法的时间复杂度为O(n^2), 空间复杂度为O(n).

    原文作者:递归算法
    原文地址: https://blog.csdn.net/taihejin/article/details/14001841
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞