First of all, your current approach is not recursive as solicited.
I personally would do something like this (complying with the need for recursion and the lack of additional variables):
def collatz(acc, mode):
if isinstance(acc, int):
acc = [acc]
if acc[-1] == 1:
if mode not in 'FBP':
raise Exception('Unsupported display type')
if mode == 'F':
print ''.join(map(str, acc))
elif mode == 'B':
print ''.join(map(str, acc[::-1]))
else:
print ''.join(map(str, acc + acc[::-1]))
return
collatz(acc + [acc[-1] * 3 + 1 if acc[-1] % 2 else acc[-1] / 2], mode)
Sample usage:
>>> collatz(11, 'F')
1134175226134020105168421
>>> collatz(11, 'B')
1248165102040132652173411
>>> collatz(11, 'P')
11341752261340201051684211248165102040132652173411