# [Python 2](https://docs.python.org/2/), 40 bytes

<pre><code class="lang-python2">f=lambda a:a&gt;[]and max(len(a),*map(f,a))</code></pre>

[Attempt This Online!](https://ato.pxeger.com/run?1=m728oLIkIz_PaMGCpaUlaboWNzXSbHMSc5NSEhUSrRLtomMT81IUchMrNHJS8zQSNXW0chMLNNJ0EjU1oeo1C4oy80oU0jSiDXVAyELHCEQbxeqY6pjoWMbGgvixOsaxUA0wiwA)

Uses Python 2's global ordering: lists are all considered greater than ints. We can also use `>` instead of `>=`, because `[]>[]` is `False` which is the same as `0`, which would be the result anyway from the `max(len(a),*map(f,a))`.

This also uses the var-args version of `max` which is shorter than constructing a list. Normally we wouldn't be able to do this, because the var-args form of `max` only works with 2 or more arguments, but if we know `a>[]` then `a` is non-empty, so `*map(f,a)` always adds at least one more argument to the call.

# [Whython](https://github.com/pxeger/whython), 34 bytes

<pre><code class="lang-python">f=lambda a:max(len(a),*map(f,a))?0</code></pre>

[Attempt This Online!](https://ato.pxeger.com/run?1=m728PKOyJCM_b8GCpaUlaboWN5XSbHMSc5NSEhUSrXITKzRyUvM0EjV1tHITCzTSdBI1Ne0NoCq1Cooy80o00jSiDXVAyELHCEQbxeqY6pjoWMbGgvixOsaxmpoQHTA7AA)

When a member is an integer, the `len` call fails; we just catch this and replace the result with `0`. When `a` is an empty list, this also fails because `max` gets only one argument, but catching and returning `0` conveniently fixes this too.