Если вы хотите точно представить исходную рекурсивную функцию Scheme:
def downup(word):
if len(word) <= 1:
return [word]
return [word] + downup(s[1:]) + [word]
Обратите внимание, что ваша собственная функция возвращает строку, если длина переданной строки равна 1, и список в противном случае. Это может привести к удивительному поведению. Попробуйте
def recursivefun(word):
if len(word) == 2:
return word
else:
x = []
x.append(word)
x.extend(recursivefun(word[1:]))
x.append(word)
return x
print recursivefun("banana")
например, который печатает
['banana', 'anana', 'nana', 'ana', 'n', 'a', 'ana', 'nana', 'anana', 'banana']
, что может отличаться от того, что вы ожидали.