サブディレクトリを再帰的に削除します。
ディレクトリを再帰的に作成します。
この2つの「再帰的」の意味がわかりません。
「フォルダの中身全て」みたいな意味なのでしょうか?
フォルダ作成に際して、
「ディレクトリを再帰的に作成する」オプションを入れると
フォルダを最下位層まで一気に作れるということはプログラミングしているうちに
何となく理解したのですが、プログラミング用語の「再帰的」って何なのでしょうか?
wikipediaには
「再帰(さいき)は、あるものについて記述する際に、記述しているものそれ自身への参照が、その記述中にあらわれることをいう。」とあったのですが・・・。
ますます意味が分からなくなってしまいました・・・。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
たとえば、
dir /S
を実行すると、ファイルのディレクトリ情報を読み出して順番に表示させます。
そして、ファイルじゃなくディレクトリであった場合、そのディレクトリに移動して、
ファイルのディレクトリ情報を読み出して順番に表示させ、
ファイルじゃなくディレクトリであった場合はそのディレクトリに移動して、
ファイルのディレクトリ情報を読み出して(以下略
とまあ、ディレクトリに出会うたび、同じ処理を最初からやり直す、という動作となり、これがまあ、再帰的動作、ということになります
まー、この同じ動作をプログラムでさせようと思ったときに、どういうふうにするかを考えると再帰、という動作がどういうことかよくわかるんですが。
投稿2019/01/08 09:28
総合スコア88163
0
ベストアンサー
「再帰」とは、ある機能の処理の中でその機能の中で使うことを指します。
質問文にあるディレクトリ削除を例に取りましょうか。
ディレクトリの削除は以下の機能となっています。
- 指定されたディレクトリの中のファイルを全て削除
- 指定されたディレクトリを削除
では、以下のようなディレクトリがあったとして、
A_DIR/B_DIR/C_DIR/D.txt
A_DIRを削除しようとするとB_DIRを削除しなければなりません。
B_DIRを削除しようとするとC_DIRを削除しなければなりません。
この場合の再帰的というのは、削除機能の中で削除機能を使うということです。
A_DIRを削除する場合、以下のような流れで削除されます。
- A_DIRの中にB_DIRがあるので先にA_DIRの削除機能がB_DIRを削除する
- B_DIRの中にC_DIRがあるので先にB_DIRの削除機能がC_DIRを削除する
- C_DIRの中のD.txtを削除する
- C_DIRが削除される
- B_DIRが削除される
- A_DIRが削除される
投稿2019/01/08 09:37
総合スコア5158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
「ディレクトリを再帰的に」の意味を意訳すると
「ディレクトリの中の中の中の中の~」と言った感じです。
1、ディレクトリの中(直下)のファイル・ディレクトリの一覧を取得 2、各ファイルorディレクトリに何らかの処理
と言った処理を行っている為、サブディレクトリも含める場合は1~2の処理を検出された子ディレクトリ毎に繰り返す(再帰する)形になります。
プログラム的に言えば、「とある関数Aの処理の中で自分自身(A)を呼び出す。」と言った形です。
大体ですがそんな感じです。
投稿2019/01/08 09:24
編集2019/01/08 09:27総合スコア52
0
ファイル階層は再帰的なデータ構造の一つです。
再帰的データ扱うには、再帰的な方法を扱うのが適しています。
再帰は、いろいろなところに現れます。マトリョーシカ人形や、巻き貝の螺旋など。
Thinking Recursively with Java https://www.amazon.co.jp/dp/0471701467
や
ゲーデル、エッシャー、バッハ https://www.amazon.co.jp/dp/4826901259
を読むとよいです。
アフリカのデザインに潜むフラクタル
https://www.ted.com/talks/ron_eglash_on_african_fractals/transcript?language=ja
も面白いかもしれません。(日本語字幕)
投稿2019/01/08 13:49
総合スコア22328
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/09 04:32
2019/01/09 04:38