2017-12-07 10 views
0

私のために私の任務を遂行する人物を探しているわけではありません。私は、割り当ての再帰的な部分について何を求めているのかについてはあまり確信していません。ファイルシステムを横断する再帰関数内の2つのfor-eachループ

これは、ディレクトリを開き、コンピュータのファイルを開くには再帰関数である:

For each ChildContainer item in dir 
Create an OrderedList of names 
For each ChildData item of the ChildContainer 
Add the ChildData name to the OrderedList of names 

なぜ2つのfor eachのステートメントは、命令の再帰部分ではあるのですか?

+0

ようこそStackOverflow!コードとして擬似コードを書式設定するためにあなたのポストをちょっと微調整しました。各行を4つのスペースでインデントすることでこれを行うことができます。質問をするときは、質問を確認するために提出する前にプレビューをチェックすることをお勧めします。私はタグを変更しました。これはJavaに固有のようではありませんが、実際は再帰に関する質問です。 – DaveyDaveDave

答えて

0

okies、それはそれは、私はあなたが再帰関数/メソッドのポイントを逃していると思うhttps://softwareengineering.stackexchange.com/

に頼まれるべきプログラミング理論の問題だプログラミングの問題ではないよう

まず、これはStackOverflowのではありませんここに。再帰関数の全体的なポイントは、それがあなたのためにネストするので、foreachを別のforeachの中に入れ子にする必要はないはずです。

これはどのように行うのかの概要ですが、私はこれが割り当てだと言ったようにコードを提供しません。私は盗作をサポートしていません。あなたはchildDataが別のディレクトリであるか、今

ファイルこの例では、それを行うには厄介な方法を簡単に概要であるが、それは再帰がANに行われるべき方法を示し、それぞれのために、二重の必要はありません

PlaceToStore = array of array of dir path (string); 

function scanPath(pathToOpen, PlaceToStore){ 
    where dirHandle equals directory reader 
    where childrenArray = dirHandle->getChilden 
    foreach child in childrenArray do 
     if(child is directory) then 
      scanPath(child->path, PlaceToStore[child->path] 
     else 
      placeToStore[child->path] = child->path 
     end if 
    endforeach 
} 

理解しやすい例。

関連する問題