Maison >développement back-end >C++ >Scénarios d'application de programmation générique de fonctions récursives C++ ?

Scénarios d'application de programmation générique de fonctions récursives C++ ?

PHPz
PHPzoriginal
2024-04-17 15:30:02903parcourir

Les fonctions récursives génériques sont définies via des modèles, permettant à la fonction de définir son comportement lors de la spécification du type. Par exemple, la fonction générique find peut être utilisée pour rechercher un élément dans une liste chaînée. Elle accepte un pointeur vers la liste chaînée et une valeur cible comme arguments jusqu'à ce que la valeur cible soit trouvée ou que la fin de la liste soit atteinte.

C++ 递归函数的泛型编程应用场景?

C++ Scénarios d'application de programmation générique de fonctions récursives

La récursion est une technique de programmation courante qui permet à une fonction de s'appeler elle-même. En C++, les techniques de programmation génériques permettent d'abstraire les fonctions récursives sous une forme plus générale, leur permettant de gérer différents types de données.

Fonctions récursives génériques

Les fonctions récursives génériques sont définies à l'aide de modèles, qui nous permettent de spécifier le comportement spécifique de la fonction lors de la spécification du type. Par exemple, voici une fonction récursive générique qui trouve un élément dans une liste chaînée :

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);
}

Cette fonction accepte un pointeur head de type générique T et un Une valeur <code>value de type T et parcourt récursivement la liste chaînée jusqu'à ce que valeur soit trouvée ou que la fin de la liste chaînée soit atteinte. T 的指针 head 和一个 T 类型的值 value,并递归地遍历链表,直到找到 value 或到达链表末尾。

实战案例

让我们创建一个简单的链表并使用 find

Exemple pratique

Créons une liste chaînée simple et trouvons un élément dedans à l'aide de la fonction find : 🎜
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;
}
🎜Sortie : 🎜
Found value: 3
🎜Cet exemple montre comment une fonction récursive générique peut gérer différents types de données de manière cohérente, dans ce cas, il est utilisé pour rechercher une valeur dans une liste chaînée d'entiers. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn