Repository: sympy/sympy

Issue:
Make limit work with binomial
limit can work with binomial by converting to factorial first. 

```
In [214]: limit(16**k/(k*binomial(2*k,k)**2), k, oo)
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/limits.py in doit(self, **hints)
    171         try:
--> 172             r = gruntz(e, z, z0, dir)
    173             if r is S.NaN:

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/gruntz.py in gruntz(e, z, z0, dir)
    640     if z0 == oo:
--> 641         r = limitinf(e, z)
    642     elif z0 == -oo:

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/gruntz.py in limitinf(e, x)
    423         x = p
--> 424     c0, e0 = mrv_leadterm(e, x)
    425     sig = sign(e0, x)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/gruntz.py in mrv_leadterm(e, x)
    479     if Omega == SubsSet():
--> 480         Omega, exps = mrv(e, x)
    481     if not Omega:

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/gruntz.py in mrv(e, x)
    258         s1, e1 = mrv(a, x)
--> 259         s2, e2 = mrv(b, x)
    260         return mrv_max1(s1, s2, e.func(i, e1, e2), x)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/gruntz.py in mrv(e, x)
    257         a, b = d.as_two_terms()
--> 258         s1, e1 = mrv(a, x)
    259         s2, e2 = mrv(b, x)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/gruntz.py in mrv(e, x)
    265         else:
--> 266             s, expr = mrv(b, x)
    267             return s, expr**e

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/gruntz.py in mrv(e, x)
    294             # e.g. something like BesselJ(x, x)
--> 295             raise NotImplementedError("MRV set computation for functions in"
    296                                       " several variables not implemented.")

NotImplementedError: MRV set computation for functions in several variables not implemented.

During handling of the above exception, another exception occurred:

NotImplementedError                       Traceback (most recent call last)
<ipython-input-214-830bdb8908f4> in <module>()
----> 1 limit(16**k/(k*binomial(2*k,k)**2), k, oo)

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/limits.py in limit(e, z, z0, dir)
     43     """
     44
---> 45     return Limit(e, z, z0, dir).doit(deep=False)
     46
     47

/Users/aaronmeurer/Documents/Python/sympy/sympy/sympy/series/limits.py in doit(self, **hints)
    183                 r = limit_seq(e, z, trials)
    184                 if r is None:
--> 185                     raise NotImplementedError()
    186             else:
    187                 raise NotImplementedError()

NotImplementedError:

In [215]: limit(16**k/(k*binomial(2*k,k)**2).rewrite(factorial), k, oo)
Out[215]: π

```

Discussion:
leosartaj: You should use a more informative PR title. Please read [this](https://github.com/sympy/sympy/wiki/Development-workflow#writing-pull-request-title-and-description).

Patch:
diff --git a/sympy/functions/combinatorial/factorials.py b/sympy/functions/combinatorial/factorials.py
index 48ea175555..fc11ad04fa 100644
--- a/sympy/functions/combinatorial/factorials.py
+++ b/sympy/functions/combinatorial/factorials.py
@@ -853,6 +853,9 @@ def _eval_rewrite_as_gamma(self, n, k):
         from sympy import gamma
         return gamma(n + 1)/(gamma(k + 1)*gamma(n - k + 1))
 
+    def _eval_rewrite_as_tractable(self, n, k):
+        return self._eval_rewrite_as_gamma(n, k).rewrite('tractable')
+
     def _eval_rewrite_as_FallingFactorial(self, n, k):
         if k.is_integer:
             return ff(n, k) / factorial(k)


Test patch:
diff --git a/sympy/series/tests/test_limits.py b/sympy/series/tests/test_limits.py
index 174814b450..09f972fcc2 100644
--- a/sympy/series/tests/test_limits.py
+++ b/sympy/series/tests/test_limits.py
@@ -456,6 +456,11 @@ def test_issue_8730():
     assert limit(subfactorial(x), x, oo) == oo
 
 
+def test_issue_10801():
+    # make sure limits work with binomial
+    assert limit(16**k / (k * binomial(2*k, k)**2), k, oo) == pi
+
+
 def test_issue_9205():
     x, y, a = symbols('x, y, a')
     assert Limit(x, x, a).free_symbols == {a}