Python 3, 108 bytes
def f(A,m,n,i=0,j=0):r=i+1<m and f(A,m,n,i+1,j);d=j+1<n and f(A,m,n,i,j+1);return A[i][j]+min(r or d,d or r)
Ungolfed
def f(A, m, n, i=0, j=0):
right = i + 1 < m and f(A, m, n, i + 1, j)
down = j + 1 < n and f(A, m, n, i, j + 1)
return A[i][j] + min(right or down, down or right)