質問編集履歴

1

追記

2021/06/23 02:07

投稿

avantgarden
avantgarden

スコア121

test CHANGED
File without changes
test CHANGED
@@ -109,3 +109,75 @@
109
109
 
110
110
 
111
111
  また、再起関数を使って期待通りの「5」を得るには、最初に書いたコードをどのように修正すれば良いでしょうか。
112
+
113
+
114
+
115
+
116
+
117
+ 【追記】
118
+
119
+ https://teratail.com/questions/52947
120
+
121
+
122
+
123
+ 上記の質問での回答内容を参考に
124
+
125
+
126
+
127
+ ```ここに言語を入力
128
+
129
+ function increm($i) {
130
+
131
+ if ($i < 5) {
132
+
133
+ $i++;
134
+
135
+ return increm($i);
136
+
137
+ }
138
+
139
+
140
+
141
+ return $i;
142
+
143
+ }
144
+
145
+
146
+
147
+ $a = increm(0);
148
+
149
+ var_dump($a);
150
+
151
+ ```
152
+
153
+
154
+
155
+ としたところ、期待する`int(5)`が出力されました。
156
+
157
+ (if文の`increm($i)`の前に`return`を追加しました)
158
+
159
+
160
+
161
+ 最初の関数の呼び出しから順にたどると
162
+
163
+ ```ここに言語を入力
164
+
165
+ increm(0) = increm(1)
166
+
167
+ increm(1) = increm(2)
168
+
169
+ increm(2) = increm(3)
170
+
171
+ increm(3) = increm(4)
172
+
173
+ increm(4) = increm(5)
174
+
175
+ increm(5) = 5 ←$iがそのまま返る
176
+
177
+ ```
178
+
179
+ ※「=」は数学のイコールの意味で書いてます
180
+
181
+
182
+
183
+ となるので結果的に「5」が返る、という理解でいいでしょうか。