teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

typoの修正

2020/03/09 14:26

投稿

TakaiY
TakaiY

スコア14545

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  関数は呼び出されると、その関数を実行するために必要なメモリなどのリソースが割り当てられます。そして、その関数が終了すれば、そのリソースは開放されます。
2
- 関数(Aとします)の中で関数(Bとします)を呼び出すと、Bのリソースが確保され実行されますが、Aのリソースまだ終っていないので、別の場所(スタックと呼ばれることが多いです)に保存されます。
2
+ 関数(Aとします)の中で関数(Bとします)を呼び出すと、Bのリソースが確保され実行されますが、Aはまだ終っていないので、リソースは別の場所(スタックと呼ばれることが多いです)に保存されます。
3
3
  スタックの領域は無限ではありませんので、関数の呼び出しの入れ子が多く(深く)なりすぎると枯渇してしまい、スタックオーバーフローというエラーになって、プログラムが異常終了してしまいます。
4
4
 
5
5
  関数を呼び出すたびにリソースが必要になるのは、同じ関数を複数回呼び出す場合も同じです。引数が同じであっても、異なっていても変りません。
@@ -10,8 +10,8 @@
10
10
  c.move(弾,0,-10)
11
11
  弾をうつ(弾)
12
12
  ```
13
- のようになっていますから、「弾をうつ」関数をつぎつぎと弾の位置を替えながら延々と呼び続けるようにあんっています。
13
+ のようになっていますから、「弾をうつ」関数をつぎつぎと弾の位置を替えながら延々と呼び続けるようにっています。
14
- 結局、すぐにリソースを食いつぶしてしまい、pythonは新設なので、このように
14
+ 結局、すぐに全てのリソースを食いつぶしてしまい、pythonは親切なので、このように
15
15
  ``` text
16
16
  RecursionError: maximum recursion depth exceeded
17
17
  ```