Search code examples
c++arraysinitializer

Why would my array would be filled out to zero, when I initialised it to -1


#include<iostream>
using namespace std;

long long int memo[20] = {-1};       //create memo table  and initialise to -1

long long int fibo(long long int n)
{
    if(memo[n]>-1)           //changing this to if(memo[n]>0) works fine
        return memo[n];      //but as such this gives 0 from all my inputs
    if(n<=2)
        return 1;
    memo[n] =  fibo(n-1) + fibo(n-2);    //recurse
    return memo[n];
}

int main()
{
    long long int n;
    cin>>n;
    cout<<fibo(n)<<endl;       //calls the fibo function 
    for(int i=0;i<20;i++)       //this prints my memo table used...
        cout<<memo[i]<<" ";
}

I am calculating the nth Fibonacci number using top-down dp but my memo table is zeroed out. Even at locations which I am not touching, why?


Solution

  • Because that's how array initialization works in C++. You set the first element of the array memo to -1, and the compiler will value-initialize (before the C++11 standard) or default-initialize (since C++11 and onward) all of of the other elements.

    Please read more about aggregate initialization here.