Hexagony, 1414 12 bytes
?(}1{?@_.=@)<!'(<>._>*' Layed out
?( } 1? {@ ._ =. @) !< '! (> <* >' . _. . . . . . Explanation
?}1 take input in the initial cell, and put 1 in the cell to its right.
!'(}? output 1some irrelevant operations initially, return tothen get the initial cell and decrementinput
< branch, if 0 go to @ and terminate, otherwise point the IP southeast
{'_(_ go todecrement the rightinput cell again but flipped, reflect IP toand redirect the IP northeast
(=1}*)! flipmove the MP back to how it was last time, decrement and add 1the cell to the right, keeping thisset that cell atto 1 stilland print that out
>_> goredirect the IP back to east travel
*' irrelevant operation, restartthen move the loopMP back to the input cell
this then loops back to the branch command