func_code_string: #include <bits/stdc++.h>   using namespace std;   const int mx = 1005;   bool vis[mx][mx][2];   double dp[mx][mx][2];   double func(int white, int black, int turn) {     if (white <= 0) {       return 0.0;     }     if (black <= 0) {       if (!turn) return 1.0;       return 0.0;     }     if (vis[white][black][turn]) return dp[white][black][turn];     double up, down, p, q, r, ans, x, y;     if (!turn) {       up = white;       down = (double)white + black;       ans = up / down;       p = (1.0 - ans);       ans += p * func(white, black - 1, 1);     } else {       up = black;       down = white + black;       p = up / down;       black--;       q = 0.0;       x = 0.0;       if (black) {         up = black;         down = black + white;         q = up / down;         x = q * func(white, black - 1, 0);       }       r = (1.0 - q);       y = r * func(white - 1, black, 0);       ans = p * (x + y);     }     vis[white][black][turn] = 1;     return dp[white][black][turn] = ans;   }   int main() {     int b, w;     scanf( %d %d , &w, &b);     memset(vis, 0, sizeof(vis));     double ans = func(w, b, 0);     printf( %.15lf n , ans);     return 0;   }   