再帰は、関数がそれ自体を呼び出す手法であり、問題を段階的に解決するシナリオで広く使用されています。 C では、再帰には次のような一般的な用途があります。 フィボナッチ数を解く 階乗の計算 順列と組み合わせの計算 ツリー構造の横断 迷路解決問題の解決
再帰は、関数がそれ自体を呼び出すことを可能にするコンピューター サイエンスの手法です。これは、段階的な問題解決が必要なシナリオで広く使用されています。この記事では、C での再帰の一般的な使用法を調査し、実際の例を通して説明します。
最も単純な再帰的使用法は、フィボナッチ数列を見つけることです。このシーケンスの各数値は、前の 2 つの数値の合計です。具体的な実装は次のとおりです。
int fibonacci(int n) { if (n <= 1) { return 1; } else { return fibonacci(n - 1) + fibonacci(n - 2); } }
数値の階乗を求めることも、古典的な再帰アプリケーションです。階乗は、その数値にそれ以下のすべての正の整数を乗算した結果です。
int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } }
再帰を使用して、順列と組み合わせを計算することもできます。配置はオブジェクトを特定の順序で配置する方法であり、組み合わせは順序に関係なくオブジェクトを配置する方法です。
配置:
int permutations(int n, int r) { if (r == 0) { return 1; } else { return n * permutations(n - 1, r - 1); } }
組み合わせ:
int combinations(int n, int r) { if (r == 0 || n == r) { return 1; } else { return combinations(n - 1, r - 1) + combinations(n - 1, r); } }
再帰が広く使用されていますツリーやグラフなどのツリー構造をトラバースする場合。
二分木の事前順序走査:
void preorderTraversal(TreeNode* root) { if (root != nullptr) { std::cout << root->val; preorderTraversal(root->left); preorderTraversal(root->right); } }
再帰を使用すると、迷路解決の問題を解決できます。再帰的アルゴリズムは、出口へのパスが見つかるまで、考えられるすべてのパスを試行することによって機能します。
rree以上がC++ 関数の再帰的実装: 再帰の一般的な用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。