2012-03-26 3 views
0

Je vais être honnête, je ne suis pas sûr des termes que j'ai utilisés dans le titre.Quelle est la différence entre la récursivité et la récursivité de l'instance de classe

Fondamentalement, je suis curieux de connaître la différence entre quelque chose comme:

class MyRecursiveClass 
{ 
public: 
    int myData; 
    MyRecursiveClass* nextInLine; 
    int myRecursiveFunction(int data) 
    { 
      data+=myData; 
      if(nextInLine == null) 
       return data; 
      else 
       return nextInLine->myRecursiveFunction(data); 

    } 
} 

et

int staticRecursiveFunction(MyRecursiveClass* target, int currentData) 
{ 
    if(target == null) 
     return currentData; 
    currentData+=target->myData; 
    staticRecursiveFunction(target->nextInLine, currentData); 
} 

ou

int otherStaticRecursiveFunction(MyRecursiveClass* target) 
{ 
    if(target == null) 
     return 0; 
    return target->myData + otherStaticRecursiveFunction(target->nextInLine); 
} 

Fondamentalement, ce que je veux est les différences dans les frais généraux, comme ainsi que de meilleures conditions pour la différence entre les deux méthodologies (j'étais à perte quand j'ai essayé t o Google)

En outre, des opinions personnelles et/ou des préférences. On m'a enseigné la récursivité plus comme un outil pour faire un travail, et j'aimerais entendre des avis professionnels (et amateurs).

aussi bonnes lectures sur les structures récursives/méthodologies seraient appréciés, mais ce n'est pas le but de ce site (plus je ne garde pas poser des questions potentiellement muets)

Répondre

1

Je ne vois pas de différence entre les deux sauf que dans un cas vous appelez une méthode statique, et dans l'autre une méthode d'instance.

En ce qui concerne la récursivité, cela ne fait aucune différence. Cela semble être plus sur l'utilisation de la programmation orientée objet que sur la programmation procédurale (et la récursivité s'applique également aux deux). En ce qui concerne les appels, l'appel d'une méthode instance/virtuelle est probablement un peu plus lent sur la plupart des systèmes en raison de la répartition qui doit avoir lieu, mais cela ne peut pas être significatif dans le grand schéma des choses. (Si le coût des appels de méthode est un problème, vous pouvez vous éloigner complètement des récursions et les dérouler en boucle).

+0

Cela avait été mon hypothèse, mais l'hypothèse est la mère de tous ... eh bien, vous savez comment le dicton va. Je me souviens que mon Instructeur de Structures de Données utilisait toujours cette dernière méthode, même lorsqu'il s'agissait d'arbres/listes/hachages/tris etc. La seule fois où j'ai été obligé d'utiliser une méthode ou l'autre, c'était quand j'avais besoin d'utiliser des méthodes privées. données dans une classe. Je me demandais s'il y avait d'autres situations dans lesquelles l'un était plus approprié que l'autre, en fonction de sa préférence personnelle. –

Questions connexes