At each position, you have up to two choices:
Take one digit (if it's -, not )
Take two digits (if they form -) For "": at position , you can take "" (valid) or "" (valid). At position , you can take "" (valid) or "" (valid). These choices branch out into different decodings. Take time to work through examples. The pattern becomes clearer with practice. This branching, choosing one or two digits, is the core recursive structure of the problem.