| # | User | Rating |
|---|---|---|
| 1 | Benq | 3676 |
| 2 | jiangly | 3670 |
| 3 | Kevin114514 | 3657 |
| 4 | maroonrk | 3355 |
| 5 | Um_nik | 3353 |
| 6 | squareOf105 | 3346 |
| 7 | tourist | 3343 |
| 8 | strapple | 3324 |
| 9 | heuristica | 3322 |
| 10 | jiangbowen | 3291 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 158 |
| 2 | nik_exists | 150 |
| 2 | maspy | 150 |
| 4 | AmShZ | 143 |
| 5 | Um_nik | 141 |
| 6 | Errichto | 139 |
| 7 | adamant | 137 |
| 8 | BledDest | 133 |
| 8 | maroonrk | 133 |
| 10 | qwexd | 130 |
| Name |
|---|



I think your recursion calls itself too much if you do it all in one go -
depee(10000000)would calldepee(9999999)which callsdepee(9999998)...depee(0), and the program consumes alot of memory to keep track of all this recursion. Your second submission avoids this issue. Whendepee(n)is called, it callsdepee(n-1)which was previously solved, and thus fewer recursive calls need to be kept track of at a time.a great example why to use bottom-up if can(which we can here)
Thanks for your explanation, I get it now.