Checking whether the position hasn 't visited the last row  or the last column.  Making recursive call for all  the possible moves from the  current cell and then adding the  maximum returned by the calls  and updating it.
if ( i < n - 1 & j < m - 1 ) { int current_sum = Math . Max ( maximum_sum_path ( i , j + 1 ) , Math . Max ( maximum_sum_path ( i + 1 , j + 1 ) , maximum_sum_path ( i + 1 , j ) ) ) ; total_sum = a [ i , j ] + current_sum ; }