Trouver le nombre minimal dans un tableau avec la récursivité?
int i = 0;
int min = x[i];
while ( i < n ){
if ( x[i] < min ){
min = x[i];
}
i++;
}
return min;
J'ai écrit la forme itérative pour trouver le nombre minimum d'un tableau. Mais je voudrais écrire une fonction qui avec la récursivité. S'il vous plaît aider!
La liste est triée? Si elle l'est, la récursivité pourrait faire plus de sens, sinon, la récursivité semble maladroit ici.
Si la liste est triée, le premier élément serait le minimum et ni itération, ni la récursivité aurait du sens.
Bien, même si elle a été trié, le dernier élément pourrait également être le minimum selon la façon dont elle a été trié...
Ne nous laissons pas faire d'hypothèses et de considérer la liste triée.
Si la liste est triée, le premier élément serait le minimum et ni itération, ni la récursivité aurait du sens.
Bien, même si elle a été trié, le dernier élément pourrait également être le minimum selon la façon dont elle a été trié...
Ne nous laissons pas faire d'hypothèses et de considérer la liste triée.
OriginalL'auteur user133466 | 2009-11-14
Vous devez vous connecter pour publier un commentaire.
Parce que cela sonne comme des devoirs, voici un indice: La valeur minimum dans un tableau est le premier élément, ou le nombre minimal dans le reste de la matrice, celle qui est la plus petite.
OriginalL'auteur Greg Hewgill
Le nombre minimal d'un élément de tableau est un élément dans le tableau.
Le nombre minimum d'un tableau avec la taille > 1 est le minimum du premier élément et le minimum du reste de la matrice.
(Le nombre minimum d'un tableau vide n'est pas défini.)
OriginalL'auteur sepp2k
Ce n'est pas une solution optimale, car vous pouvez enregistrer le résultat de l'appel récursif dans une variable int, mais je n'étais pas dans mon exercice.
De toute façon, cette fonction permet de rechercher la valeur la plus basse dans un tableau int en utilisant la récursivité.
Comme le premier, il vérifie le nombre d'éléments dans le tableau en vérifiant si la taille est égale à 1, puis retourne la première valeur comme résultat. Si le tableau est plus grand que 1 (et techniquement aussi lorsque le bas), il compare la dernière valeur du tableau avec l'appel récursif avec le reste de la matrice.
La récursivité s'arrête à l'0-index, puis compare cette valeur à l'indice 1. Il compare ensuite la valeur la plus faible de l'indice 0 et 1 par la valeur de l'indice 3 et ainsi de suite jusqu'à ce qu'il atteigne la dernière valeur.
Règles dans mon exercice:
Je n'avais aucune idée de comment résoudre mon exercice, même après avoir regardé cette page. J'avais toujours la page qui s'ouvre après j'ai trouvé la solution moi-même et a décidé de le poster ici. De toute façon, j'ai édité mon post et ajouté une explication.
le mien était juste une suggestion (avec une erreur 😀 show -> devrait. Putain smartphone auto-correcteur) pour une réponse complète. Pour l'avenir, c'est apprécier si vous commenter votre code, parce que vous pouvez en dire plus à ce sujet. Bien sûr, c'était un simple exercice de sorte qu'il n'était pas vraiment important, mais c'est une question de novice, donc je chose est gentil de donner une réponse pour un novice. +1 pour l'effort 🙂
OriginalL'auteur botder
Sons comme des devoirs, mais votre meilleur pari est quelque chose comme ceci:
OriginalL'auteur Myles
Voici une fonction qui retourne un pointeur vers la valeur minimale:
OriginalL'auteur DigitalRoss
règle générale de la récursivité est pour éviter les "petits pas" - "premier élément par rapport au reste du tableau" est une très mauvaise idée. essayez de traiter le tableau en deux, comme ceci:
pour la poursuite de l'optimisation:
- éviter la matrice de copies - envisager l'utilisation de quicksort-comme signature (tableau, de, pour)
- éviter les appels récursifs pour les tailles < 2
OriginalL'auteur Frantisek Kossuth
Pourquoi voulez-vous faire avec la récursivité? Une règle générale avec la récursivité est de ne pas utiliser la récursivité si vous pouvez le faire à l'intérieur d'un linéaire simple boucle.
Meh. J'aime la récursivité. Fondamentalement, je suis d'appliquer l'inverse de la règle (à condition que le compilateur a récursion sur la queue de l'optimisation).
À l'aide de la queue de la récursivité, il semble comme s'il n'y a pas de différence entre la droite de la boucle et la récursivité, en supposant une demi-décent compilateur. Il dépend seulement de ce qui est plus clair au niveau du code.
exactement. Et pour cette raison, j'ai souvent (pas toujours) préfèrent la récursivité. Pour beaucoup de choses, la récursivité correspond à l'expression naturelle d'un concept mathématique, littéralement, tandis que itération nécessite de refactoring. Je reconnais que beaucoup de gens ont un problème avec la récursivité j'ai donc essayer de l'éviter dans un “non naturelle de l'habitat”. Mais l'OP problème est en fait extrêmement bien adaptés à la récursivité (c'est juste une simple réduction à l'aide de
min
que l'opération).OriginalL'auteur Makach
Essayer:
Bien que cela ne fonctionne pas dans des langages impératifs.
Une réponse plus sérieuse serait, en pseudo-code:
Bien que cela ne fonctionne pas, si l est vide.
OriginalL'auteur Jack V.
OriginalL'auteur Timothy Law
OriginalL'auteur H. Murcia
OriginalL'auteur Diti Ymeri