2012-12-27 7 views
0

quelle est la différence entre ces deux.Dilemme récursif

int find_set (int v) 
{ 
    if (v == parent [ v ]) 
     return v ; 
    return parent [ v ] = find_set (parent [ v ]) ; 
} 

Et:

int find_set (int v) 
{ 
    if (v == parent [ v ]) 
     return v ; 
    parent [ v ] = find_set (parent [ v ]) ; 
} 
+6

La seconde n'a pas d'instruction 'return' si l'instruction' if' échoue. C'est ce que vous vouliez dire? –

Répondre

4

La différence, comme l'a déclaré @Omri, est que le second n'a pas de retour si l'instruction if n'exécute pas, vous laissant avec (je l'espère) une erreur de compilateur pour un chemin de code sans valeur de retour. Contrairement aux langages comme Ruby, la dernière instruction d'une méthode ou d'une fonction C++ n'est pas implicitement la valeur de retour.