1646-get-maximum-in-generated-array

DevGod needs to write a blog entry for this problem!
/**
 * @param {number} n
 * @return {number}
 */

var genArray = function(n){
    let nums = [];
    nums[0] = 0;
    nums[1] = 1;

    let I = 1;
    while(2*I+1 <= n){
        nums[2*I] = nums[I];
        nums[2*I+1] = nums[I]+nums[I+1];
        I++;
    }

    return nums;
}
var getMaximumGeneratedOld = function(n) {
    if(n==0){return 0;}
    return Math.max(...genArray(n));
};

//Actually using DP
//Find value at n
var getMaximumGenerated = function(n, ans=[0,1]) {
    if(ans[n] !== undefined){
        return ans[n];
    }
    
    else if(n%2 === 1){
        if( ans[Math.floor(n/2)] === undefined ){
            ans[Math.floor(n/2)] = getMaximumGenerated(Math.floor(n/2), ans);
        }
        if( ans[Math.floor(n/2)+1] === undefined ){
            ans[Math.floor(n/2)+1] = getMaximumGenerated(Math.floor(n/2)+1, ans);
        }
        ans[n] = ans[Math.floor(n/2)]+ans[Math.floor(n/2)+1];
    }else{
        if( ans[Math.floor(n/2)] === undefined ){
            ans[Math.floor(n/2)] = getMaximumGenerated(Math.floor(n/2), ans);
        }
        ans[n] = ans[Math.floor(n/2)];
    }

    return ans[n];
};