Recherche autre qu'avec récursivité [Résolu]

Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
- - Dernière réponse : krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
- 19 janv. 2010 à 09:49
Bonsoir à tous,
Je voudrais juste savoir si il existe une autre solution que la récursivité pour rechercher un fichier sur un disque dur. Je suppose que oui, mais je ne trouve pas...
Et si oui, j'aimerais pouvoir l'utiliser!!!


Voilà c'est tout! Je vous remercie d'avance et attends vos réponse.

moi
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
37
3
Merci
Bonjour,
Tout algorithme récursif peut être transformé en un équivalent non-récursif.
Donc oui, c'est faisable.

Le problème c'est que, très souvent, la transformation de l'un à l'autre est très complexe. Tellement, qu'on ne l'utilise pas... (pour la recherche d'un fichier sur le risque dur, je ne sais pas, mais j'imagine que oui sinon cette méthode serait très utilisée).

Comme dit plus haut, s'il n'y pas de table indexant les fichiers, la meilleure solution reste ici probablement une approche récursive...


[hr]
-Site personnel-
-Blog-

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
22
3
Merci
@Bidou. En effet, je suis d'accord que tout algorithme récursif peut être transformé en équivalent non-récursif. Cependant, dans des cas où l'algo récursif semble, dans son principe, le choix "évident" (recherche de fichiers, outil "pot de peinture" de paint...), l'algorithme non-récursif est généralement beaucoup moins performant.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Commenter la réponse de krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
22
0
Merci
Salut

A ma connaissance, non, il n'existe pas d'autre moyen. Sauf peut-être en touchant directement à la table d'allocation de fichiers, mais je doute que ce soit faisable en C# (et je ne sais pas du tout à quoi ça ressemble).

Pourquoi ne veux-tu pas utiliser la récursivité ?

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Commenter la réponse de krimog
Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
3
0
Merci
Salut,
Je ne veux pas spécialement utiliser autre chose, c'est juste que le programme que j'ai fait, est plus lent que la recherche de windows... Je me suis donc dit qu'il existait une autre méthode de recherche et n'ayant rien trouvé j'ai posé la question...

(Un peu comme les méthodes de tri! On commence par le tri à bulle parce que c'est plus simple!)

Voilà c'est tout, je te remercie pour ton aide!!!



moi
Commenter la réponse de moi411
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
22
0
Merci
c'est juste que le programme que j'ai fait, est plus lent que la recherche de windows

Sur Windows Vista et 7, les fichiers sont indexés dans une base de données, ce qui permet une recherche extrêmement rapide (quasi instantanée) des données. Sur Windows XP, il fonctionne à priori de manière récursive. Et j'aurais tendance à dire : heureusement que le système de recherche créé par un simple (n'y vois rien de péjoratif) développeur de 24 ans (probablement en à peine quelques heures) est moins performant que celui fait par Microsoft dans son OS !

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Commenter la réponse de krimog
Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
3
0
Merci
Re,
Ca c'est vrai et je suis entièrement d'accord avec toi!!! Ce serait une humiliation pour Microsoft (je dit ça tout en sachant que je développe en amateur...)!
Là en l'occurence ma fonction de recherche est dans une dll donc ça m'a prit 2 minutes, à peine!

Voili voilou...

Salut.
moi
Commenter la réponse de moi411