The Eulerian number \( A(n, m) \) is a mathematical concept that counts the number of permutations of the numbers \( 1, 2, \ldots, n \) in which exactly \( m \) elements are greater than the previous element. It can be defined recursively as:
\[
A(n, m) = (n - m) \cdot A(n-1, m-1) + (m + 1) \cdot A(n-1, m)
\]
with the base cases:
\[
A(n, m) = 0 \text{ if } m \geq n \text{ or } n = 0
\]
\[
A(n, 0) = 1 \text{ for all } n > 0
\]
Write a function `eulerian_num(n, m)` that computes the Eulerian number \( A(n, m) \) using the recursive definition.
#### Example Usage
```python [main.nopy]
print(eulerian_num(3, 1)) # Output: 4
print(eulerian_num(4, 1)) # Output: 11
print(eulerian_num(5, 3)) # Output: 26
```
#### Constraints
- The function should handle inputs where \( n \) and \( m \) are non-negative integers.
- The function should use recursion to compute the result.