C++ Recursive Method, but why TLE?

```
class Solution {
public:
int uniquePaths(int m, int n) {
if(m == 0 || n == 0){
return 0;
}
return startpoint(1, 1, m, n);
}
int startpoint(int x, int y, int m, int n) {
if(x > n || y > m){
return 0;
}
if(x == n && y == m){
return 1;
}
return startpoint(x + 1, y, m ,n) + startpoint(x, y + 1, m, n);
}
};
```

I try and failed at m = 23, n = 12

could any one tell me why and how to solve?