引数のlistを使いまわして変更を加えていくので、こんな風に書けば良いです。
python
1def calculate_fibonacci(number, kolist): # スペルミス
2 if number == 2:
3 return
4 kolist.append(kolist[-1] + kolist[-2])
5 number -= 1
6 calculate_fibonacci(number, kolist)
7
8l = [1, 1]
9calculate_fibonacci(100, l)
10print(l)
11""" =>
12[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 676,... # 中略
13"""
14
質問文のコードだと返り値そのものはNoneになります(明示的にreturnされなければNoneが返る)。LouiS0616さんの回答を参考にされると良いと思います。
ただし、正しく[1, 1]
を入れないと正常に動作しない関数は困りますから、たとえばこんなふうにしてみるといった改善が可能です。numberだけで呼べるようにしました。
python
1def calculate_fibonacci(number):
2 kolist = [1, 1]
3 def calculate_fibonacci_i(number, kolist):
4 if number == 2:
5 return
6 kolist.append(kolist[-1] + kolist[-2])
7 number -= 1
8 calculate_fibonacci_i(number, kolist)
9 calculate_fibonacci_i(number, kolist)
10
11 return kolist
引数のデフォルト値を使うと、以下のようにも書けます。
python
1def calculate_fibonacci(number, kolist=None):
2 if kolist is None:
3 kolist = [1, 1]
4 if number == 2:
5 return kolist
6 kolist.append(kolist[-1] + kolist[-2])
7 number -= 1
8 return calculate_fibonacci(number, kolist)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/07 10:57
2018/11/07 12:08
退会済みユーザー
2018/11/07 14:47