BLOG

【新人ヤマちゃんの記録】10

こんにちは、新人のヤマちゃんです。

本日の学習内容をブログで振り返ります。

◆本日の内容

JavaScript
文法とデータ型
制御フローとエラー処理
ループとイテレーター
関数

本日は昨日に引き続き JavaScript の学習を行い、基本的な文法~関数までを復習しなおしました。

特に理解に時間を割いたのが「再帰関数」です。
再帰関数とは、メソッドのなかで自分自身のメソッドを呼ぶ関数のことです(合わせ鏡のようなイメージ)。
つかいどころとしては、たとえば親の要素から子の要素へと階層が連続したデータにアクセスする際に便利(らしい)です。

ここで理解に苦しんだのが以下のコード例です。

出力:

begin:3
begin:2
begin:1
begin:0
end:0
end:1
end:2
end:3

begin:~ がなぜ出力されるかはわかります。
しかし、end:~ がなぜ値を増やしているのか。
小一時間は悩んでいました……

結局、これは return 実行以降、関数スタック(「コールスタック」とも呼ぶ)という機能によって、保持されていた戻り値を返すことを繰り返しているからです。

再帰処理では基本的にreturnで自分自身を呼び出します。
再帰の終了は戻り値を返します。一度戻り値を返すと
その前の関数(自分自身)に戻り値が返り、
さらにその前の関数に戻り値が返り。。。
と言うように巻き戻しのような処理が発生します。

(引用:http://d.hatena.ne.jp/hiko4415/20120306/1331042925

↑「もしや巻き戻っているのでは?」と思い、「JavaScript 再帰関数 巻き戻り」で検索して行き着きました。

◆所感

いろいろと仮説を立ててググることは大事だと思いました。
自走できるようになるためにも、検索能力は鍛えていきたいです。

◆さいご一言

スプラトゥーン2のサーモンランで、難破船ドンブラコのグリルは急に難易度が上がってつらいですよね……

BLOGトップへ戻る