84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
PHP の再帰関数 (フィボナッチを使用しない) を、例を使って分かりやすく説明してくれる人はいますか?例を見ているのですが、フィボナッチがまったく分かりません。
1 つの例は、指定されたディレクトリのサブディレクトリにあるすべてのファイルを印刷することです (これらのディレクトリにシンボリックリンクがない場合、何らかの形で機能が壊れる可能性があります)。すべてのファイルを印刷する擬似コードは次のとおりです:
最初にすべてのサブディレクトリを印刷し、次に現在のディレクトリ内のファイルを印刷するという考え方です。この考え方はすべてのサブディレクトリに対して機能するため、この関数はすべてのサブディレクトリに対して再帰的に呼び出されます。
この例を試したい場合は、特別なディレクトリ . と .. を確認する必要があります。そうしないと、printAllFiles(". ")# の呼び出しが停止します。 ## 常にこの方法で。さらに、印刷する内容と現在の作業ディレクトリを確認する必要があります (opendir()、getcwd()... を参照)。
.
..
printAllFiles(". ")# の呼び出しが停止します。 ## 常にこの方法で。さらに、印刷する内容と現在の作業ディレクトリを確認する必要があります (
、
... を参照)。
再帰関数とは、それ自体を呼び出す関数です。
関数がそれ自体を呼び出し続ける場合、関数はどのようにして停止時期を知るのでしょうか?基本ケースと呼ばれる条件を設定します。基本ケースでは、再帰呼び出しをいつ停止するかを指示します。そうでない場合は、無限ループになります。
私にとって、学ぶべき良い例は Factorial一个> です。以下のコメントを見ると、階乗関数は少し複雑なようですが、必要な場合に備えてここに残しておきます。
Web 開発での再帰関数の使用については、私は個人的には再帰呼び出しを使用しません。再帰に依存することが悪い習慣だとは思いませんが、再帰を第一の選択肢にするべきではありません。誤って使用すると致命的になる可能性があります。
ディレクトリの例に匹敵するものではありませんが、これがお役に立てば幸いです。
この質問を確認することも役立ちます。受け入れられた回答は、再帰関数がどのように機能するかを分かりやすく示しています。 OP の質問には Java が含まれていますが、概念は同じです。
1 つの例は、指定されたディレクトリのサブディレクトリにあるすべてのファイルを印刷することです (これらのディレクトリにシンボリックリンクがない場合、何らかの形で機能が壊れる可能性があります)。すべてのファイルを印刷する擬似コードは次のとおりです:
リーリー最初にすべてのサブディレクトリを印刷し、次に現在のディレクトリ内のファイルを印刷するという考え方です。この考え方はすべてのサブディレクトリに対して機能するため、この関数はすべてのサブディレクトリに対して再帰的に呼び出されます。
この例を試したい場合は、特別なディレクトリ
.
と..
を確認する必要があります。そうしないと、printAllFiles(". ")# の呼び出しが停止します。 ## 常にこの方法で。さらに、印刷する内容と現在の作業ディレクトリを確認する必要があります (
opendir()、
getcwd()... を参照)。
一般用語:
再帰関数とは、それ自体を呼び出す関数です。
さらに詳しく:
関数がそれ自体を呼び出し続ける場合、関数はどのようにして停止時期を知るのでしょうか?基本ケースと呼ばれる条件を設定します。基本ケースでは、再帰呼び出しをいつ停止するかを指示します。そうでない場合は、無限ループになります。
私にとって、学ぶべき良い例は Factorial一个> です。以下のコメントを見ると、階乗関数は少し複雑なようですが、必要な場合に備えてここに残しておきます。
リーリーWeb 開発での再帰関数の使用については、私は個人的には再帰呼び出しを使用しません。再帰に依存することが悪い習慣だとは思いませんが、再帰を第一の選択肢にするべきではありません。誤って使用すると致命的になる可能性があります。
ディレクトリの例に匹敵するものではありませんが、これがお役に立てば幸いです。
(2010/4/20) 更新:
この質問を確認することも役立ちます。受け入れられた回答は、再帰関数がどのように機能するかを分かりやすく示しています。 OP の質問には Java が含まれていますが、概念は同じです。