listをreturnさせるのがうまくいきません。


Python3で質問です。  
f(0)=1, f(1)=1, f(n)=f(n-1)+f(n-2), n>1と言う条件でnが1から20までの再帰を行いたいのですが

[code]

    def f(n):
        if n == 0 or n == 1:
            return 1
        else:
            return f(n-1)+f(n-2)
    def main():
        for i in range(11):
            print(f(i))
    main()
    
[/code]

帰ってくる値は  
1  
1  
2  
3  
5  
8  
13  
21  
34  
55  
89

もともとのコードはこうなのですが、これをreturn時にlistに入れてreturnしたいのですがうまくいきません

[code]

    def f(n):
        L = []
        ans = []
        if n == 0 or n == 1:
            ans = 1
            L.append(ans)
            return L
        else:
            ans = f(n-1)+f(n-2)
            L.append(ans)
            return L
    def main():
        for i in range(11):
            print(f(i))
    main()
    
[/code]

このように書くと上のような値が帰ってきません。

どのようにすればlistに入れてreturnさせてもうまくいきますか？  
お知恵を貸してください




別解として、以下の様に書いてみました。

[code]

    def f(n):
        if n == 0:
            return [1]
        elif n == 1:  
            return [1, 1]
        else:
            fn1 = f(n-1)
            return fn1 + [fn1[-1] + fn1[-2]]
    
    def main():
        for i in range(11):
            print("f({0}) = {1}".format(i, f(i)))
    
    main()
    
[/code]

