回答編集履歴
3
追記
test
CHANGED
@@ -2,13 +2,11 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
第1項、第2項は既知なので、
|
6
|
-
|
7
|
-
第n項を求める際の計算回数がn-2回で済むから。
|
5
|
+
第1項、第2項は既知なので、第n項を求める際の計算回数がn-2回で済むから。
|
8
6
|
|
9
7
|
|
10
8
|
|
11
|
-
1を引いているのはカウンタ変数
|
9
|
+
1を引いているのはカウンタ変数iの初期値を1にしているからです。
|
12
10
|
|
13
11
|
これを最初から2にしてしまえば while i < count で充分な筈。
|
14
12
|
|
@@ -22,11 +20,113 @@
|
|
22
20
|
|
23
21
|
iにどんな値が入っていて、fib[i]とfib[i-1]が何を指しているのか確認すると良いです。
|
24
22
|
|
23
|
+
```Python
|
25
24
|
|
25
|
+
def gen_fib():
|
26
|
+
|
27
|
+
count = 10 # とりあえず固定
|
28
|
+
|
29
|
+
i = 1
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
# elif count > 2:
|
34
|
+
|
35
|
+
fib = [1,1]
|
36
|
+
|
37
|
+
while i < (count - 1):
|
38
|
+
|
39
|
+
print(f'fib={fib}')
|
40
|
+
|
41
|
+
print(f'i={i}, fib[i]={fib[i]}, fib[i-1]={fib[i-1]}')
|
42
|
+
|
43
|
+
print()
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
fib.append(fib[i] + fib[i-1])
|
48
|
+
|
49
|
+
i += 1
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
print(f'return: {fib}')
|
54
|
+
|
55
|
+
return fib
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
gen_fib()
|
62
|
+
|
63
|
+
```
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
**実行結果** [Wandbox](https://wandbox.org/permlink/hO0PhWOcVtizHwWc)
|
68
|
+
|
69
|
+
```
|
70
|
+
|
71
|
+
fib=[1, 1]
|
72
|
+
|
73
|
+
i=1, fib[i]=1, fib[i-1]=1
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
fib=[1, 1, 2]
|
78
|
+
|
79
|
+
i=2, fib[i]=2, fib[i-1]=1
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
fib=[1, 1, 2, 3]
|
84
|
+
|
85
|
+
i=3, fib[i]=3, fib[i-1]=2
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
fib=[1, 1, 2, 3, 5]
|
90
|
+
|
91
|
+
i=4, fib[i]=5, fib[i-1]=3
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
fib=[1, 1, 2, 3, 5, 8]
|
96
|
+
|
97
|
+
i=5, fib[i]=8, fib[i-1]=5
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
fib=[1, 1, 2, 3, 5, 8, 13]
|
102
|
+
|
103
|
+
i=6, fib[i]=13, fib[i-1]=8
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
fib=[1, 1, 2, 3, 5, 8, 13, 21]
|
108
|
+
|
109
|
+
i=7, fib[i]=21, fib[i-1]=13
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
fib=[1, 1, 2, 3, 5, 8, 13, 21, 34]
|
114
|
+
|
115
|
+
i=8, fib[i]=34, fib[i-1]=21
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
return: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
|
120
|
+
|
121
|
+
```
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
余談
|
26
126
|
|
27
127
|
---
|
28
128
|
|
29
|
-
あんまり良いお手本になる
|
129
|
+
ご提示のコードは、あんまり良いお手本になるようには見えません。
|
30
130
|
|
31
131
|
再帰処理を避けるとしても、次のように書くのがより簡潔ではないでしょうか。
|
32
132
|
|
2
追記
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
> なぜ-1をするのでしょうか?
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
第1項、第2項は既知なので、
|
2
6
|
|
3
7
|
第n項を求める際の計算回数がn-2回で済むから。
|
@@ -7,6 +11,16 @@
|
|
7
11
|
1を引いているのはカウンタ変数のiの初期値を1にしているからです。
|
8
12
|
|
9
13
|
これを最初から2にしてしまえば while i < count で充分な筈。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
> fib.append(fib[i] + fib[i-1])
|
18
|
+
|
19
|
+
i += 1 ここの処理で1.1.2.3.5.8の処理をしているのでしょうか?
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
iにどんな値が入っていて、fib[i]とfib[i-1]が何を指しているのか確認すると良いです。
|
10
24
|
|
11
25
|
|
12
26
|
|
@@ -31,3 +45,19 @@
|
|
31
45
|
return fib[:cnt]
|
32
46
|
|
33
47
|
```
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
コードの書き方について
|
52
|
+
|
53
|
+
---
|
54
|
+
|
55
|
+
teratailには、コードを見やすく表示する機能があります。
|
56
|
+
|
57
|
+
質問編集画面を開き、コードを選択した状態で<code>ボタンを押して下さい。
|
58
|
+
|
59
|
+
![Python](56957fe805d9d7befa7dba6a98676d2b.gif)
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。
|
1
追記
test
CHANGED
@@ -7,3 +7,27 @@
|
|
7
7
|
1を引いているのはカウンタ変数のiの初期値を1にしているからです。
|
8
8
|
|
9
9
|
これを最初から2にしてしまえば while i < count で充分な筈。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
---
|
14
|
+
|
15
|
+
あんまり良いお手本になるコードには見えません。
|
16
|
+
|
17
|
+
再帰処理を避けるとしても、次のように書くのがより簡潔ではないでしょうか。
|
18
|
+
|
19
|
+
```Python
|
20
|
+
|
21
|
+
def make_fib(cnt):
|
22
|
+
|
23
|
+
fib = [1, 1]
|
24
|
+
|
25
|
+
for _ in range(cnt-2):
|
26
|
+
|
27
|
+
fib.append(fib[-1] + fib[-2])
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
return fib[:cnt]
|
32
|
+
|
33
|
+
```
|