float caculate(int Pos, int Step,  vector<vector<float>> &P) {     float Pleft = 0, Pright = 0 ;      /*步数走完肯定不会掉下去*/     if( Pos >= 0 && Pos <= 60 && Step == 0)        {         P[Pos][Step] = 1;                             return P[Pos][Step];     }      /*越界肯定会掉下去*/     if(Pos < 0 || Pos > 60)                       {         return 0;     }     /*由于会算很多组,算过了就不用再算了,不等于初始值就代表算过了*/     if(P[Pos][Step] > -0.5 )                     {         return P[Pos][Step];     }     /*在某一位置不会掉落的概率 = 向左走的概率(1/2) * 左边位置不会掉落的概率 + 向右走的概率(1/2) * 右边位置不会掉落的概率 */     Pleft  = (1/2) * caculate(Pos - 1, Step - 1, P);      Pright = (1/2) * caculate(Pos + 1, Step - 1, P);       P[Pos][Step] =  Pleft + Pright;     return P[Pos][Step]; }