汎用再帰関数はテンプレートを通じて定義され、型が指定されたときの関数の動作を定義できます。たとえば、汎用関数 find を使用すると、リンク リスト内の要素を検索できます。この関数は、ターゲット値が見つかるかリストの末尾に到達するまで、リンク リストへのポインタとターゲット値を引数として受け取ります。
C 再帰関数の汎用プログラミング アプリケーション シナリオ
再帰は、関数がそれ自体を呼び出すことを可能にする一般的なプログラミング手法です。 C では、汎用プログラミング手法により、再帰関数をより一般的な形式に抽象化し、さまざまな種類のデータを処理できるようになります。
汎用再帰関数
汎用再帰関数はテンプレートを使用して定義され、型を指定するときに関数の特定の動作を指定できます。たとえば、リンク リスト内の要素を検索する汎用再帰関数を次に示します。
template <typename T> T find(T* head, T value) { if (head == nullptr) { return nullptr; } if (head->data == value) { return head; } return find(head->next, value); }
この関数は、ジェネリック型 T
head
と # のポインタを受け入れます。 value
型の値。value
が見つかるか、リンク リストの最後に到達するまで、リンク リストを再帰的に走査します。
簡単なリンク リストを作成し、
find 関数を使用してその中の要素を見つけてみましょう: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>struct Node {
int data;
Node* next;
};
int main() {
Node* head = new Node{1, new Node{2, new Node{3, nullptr}}};
int value = 3;
Node* result = find(head, value);
cout << (result != nullptr ? "Found value: " + to_string(result->data) : "Value not found") << endl;
return 0;
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
出力:
Found value: 3
この例は、汎用再帰関数が一貫した方法でさまざまなタイプのデータを処理する方法を示しています。この例では、整数のリンク リスト内の値を見つけるために使用されます。
以上がC++ 再帰関数の一般的なプログラミング アプリケーション シナリオ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。