No.3ベストアンサー
- 回答日時:
再帰的な処理を再帰を使わずに実装するのは可能でしょう。
ただ、素直に再帰を使った方が簡単で、シンプルなことがほとんどかと思います。
ファイル検索について、キューで書いて見ました
(キューじゃなくてスタックでも同じ)
最初のディレクトリ名をキューに入れる
キューが空になるまでループ {
キューから1つディレクトリ名を取り出す
そのディレクトリ内を検索 {
もしディレクトリならキューに入れる
ファイルなら表示するなど
}
}
キューやスタックをどう実装するかは、いろいろでしょう。
配列で楽しようとすれば、#2の方の「処理回数に制限」がつきます。
No.4
- 回答日時:
No.2のymmasayanです。
>階乗計算に再帰を使う例が良く出てきますが、実際には再帰を使わなくても
>プログラムは出来ます。
そのとおりです。再帰の例題にでてくるのは却って再帰の必要性に疑問を持たせる
ものばかりです。再帰でなくても簡単に書けてしまうからです。
今回のファイル一覧表示もNo.3の方が示された形で簡単に出来てしまいます。
しかしBASICのようにキューもスタックもない言語では配列を使って
擬似的にキューかスタックを作らねば成らず、相当な苦労を伴います。
これらよりももっと複雑な(多変数を扱うような)ものではさらに大変に成るでしょう。どこまでを可能といい、どこからを不可能というか難しいところですね。
結局答えに成りませんでした。
No.2
- 回答日時:
再帰処理を厳密に考えると可能な言語はかなり限られます。
特に古い言語やご指摘のBASICは再帰処理に対応していません。
GOSUB、RETURNを何重にもネストで書けば再帰処理と同じことは
出来ますがこれは再帰処理とは言いません。
再帰処理とは実行中のルーチンの途中からGOSUB(CALL)でそのルーチンの
トップに飛び込みこれを何回でも繰り返せるものです。
再帰処理を使わずに同じようなことはできると書きましたが、実際のプログラムは
結構大変です。処理回数に制限がつくこともネックです。
この回答への補足
改めて、質問を整理しますと、
例えば、階乗計算に再帰を使う例が良く出てきますが、実際には再帰を使わなくてもプログラムは出来ます。
それと同じように、サブフォルダがいくつあるか分からないのに、再帰を用いずサブフォルダまで含め、ファイル一覧を表示するプログラムは出来るのでしょうか?
お願いいたします。
回答ありがとうございました。
質問は、再帰を用いずに再帰と同様の効果が得られるプログラムは書けるのか?ということですが、
貴殿の回答は、#1さんとは異なり、処理回数に制限がつく等で出来ないとう事ですね。
No.1
- 回答日時:
BASIC(VBを含まない)で再起処理出来ないという訳ではないと思います。
gosubやreturnを使えば良いわけですから。
但し、C言語の様にローカル変数やグローバル変数という概念が無く、すべてグローバル変数の様に扱われるからだと思います。
再起を使わないでやる場合は、上位ディレクトリに戻る際に、再度ディレクトリの中を検索くして、次のディレクトリを探して移動といった事を行わなくてはなりませんので、かなり処理に無駄がありますね。
それ以外だとすれば、配列に入れておくという事も出来ますが、1次元配列しか作れなかったと思いますので、親ディレクトリのすべてのファイルやディレクトリを保持しておくのは難しいですね。
とは言ってもCで再起で書いても
_dos_findfirstや_dos_findnextが再起で正常に動作するかは不明ですね。
正常に動作させるには、カレントディレクトリのファイルやディレクトリを配列に保存しておかなくてはなりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 再帰代名詞の使用及び不使用条件について 2 2022/10/17 11:28
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Windows 10 Internet Explorer-11 を削除はしたけれど… 3 2022/06/20 17:54
- ノートパソコン PCが異常に遅い 12 2023/04/05 14:01
- Visual Basic(VBA) マクロについて教えてください 作業中のフォルダを ThisWorkbook.Path と表示しますが 6 2023/07/02 15:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フルパスから最後のディレクト...
-
どんなプログラムを書いても指...
-
windows.hがincludeされない
-
ExcelVBAでカレントディレクト...
-
セルに入力されたパスでフォル...
-
FindFirstFileについて
-
マイクラでPythonのプログラミ...
-
パス名を表示させたい
-
ThisWorkbook.Pathについて
-
EXCELでダイアログボックスを開...
-
webアプリケーションでの画像フ...
-
delphi5でのディレクトリ内ファ...
-
VBAのSHELLを用いてEXEファ...
-
GetPrivateProfileStringでini...
-
C言語を用いたファイルの一括削...
-
AfxLoadLibrary関数で、DLLのハ...
-
ファイルやディレクトリの存在...
-
FTPでputすると空ファイルが出...
-
VBでのファイル検索について。
-
Ubuntu テキストファイルをどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どんなプログラムを書いても指...
-
フルパスから最後のディレクト...
-
FTPでputすると空ファイルが出...
-
windows.hがincludeされない
-
ExcelVBAでカレントディレクト...
-
「UNCパスはサポートされません...
-
マイクラでPythonのプログラミ...
-
C言語を用いたファイルの一括削...
-
fopenで別ディレクトリにファイ...
-
GetPrivateProfileStringでini...
-
ファイルやディレクトリの存在...
-
ネットワーク上のコンピュータ...
-
ExcelVBA サーバーの(共有フォ...
-
エクセルVBAで相対パスでファイ...
-
pythonでの日本語操作
-
VBAで自身のファイル名を取得す...
-
webアプリケーションでの画像フ...
-
絶対パスの絶対て英語で何でし...
-
FTPでリモートのファイル一覧取得
-
ファイルダイアログのカレント...
おすすめ情報