|
Dernière réponse | ||
---|---|---|
Sujet : petite fonction récurrsive... | ||
BENB |
|
Aperçu |
---|
Vue Rapide de la discussion |
---|
BENB |
|
gizmo |
|
Kyle_Katarn | sache que mathématiquement, même l'ensemble vide est un ensemble, c'est même un espace vectoriel (voire une C-algèbre si tu veux...) |
flo850 | cessez le feu , je me rends , je l'ai oublié , il faut rajouter si vide(E) alors arreter avant la boucle for |
art_dupond |
|
art_dupond | waouw, pleins de réponses :love: Merci les gens. je vais lire tout ca... :jap: |
LeGreg | [HS]Hop, l'extrait en question[/HS]
|
LeGreg | eheh il n'est pas necessaire
d'avoir un ensemble fini pour enumerer ses elements, il suffit qu'il soit denombrable. mais pour s'en convaincre il suffit de se dire que si l'enumeration doit se terminer a l'element n pour raison X ou Y (memoire, ou capacite en bits), alors rien n'interdit de doubler la memoire ou la ressource qui fait defaut pour enumerer l'element n+1. Bon evidemment se pose le probleme de la terminaison et de l'argent necessaire si les besoins en ressources croissent avec le nombre d'element a enumerer. Par contre si l'ensemble n'est pas denombrable (ensemble des reels), alors le probleme est insoluble avec les machines universelles classiques. Ce qui fait dire a certains que les nombres reels n'existent pas et sont une conspiration de mathematiciens mais je m'egare :) A+ LEGREG |
BENB | LeGreg > NULL est une valeur en C/C++, 0 en general, et c'est nous qui semantiquement lui donnons le sens de "rien"
Je suis bien d'accord avec toi, "element vide" est une expression absurde, et c'est avant tout cette expression que j'ai attaque, d'abord parceque un element n'est, a priori, pas un contenaire et de plus le vide ne s'appliquait pas a lui... Il aurrait donc ete "l'element 'vide'" ou encore "l'element du vide" mais alors l'ensemble qui le contient n'est plus vide. Il n'est donc pas "vide" Il n'est donc pas un element. Pour revenir au debut de la discution avec Gizmo, "Pour chaque element de E" implique en lui meme une terminaison si E est un ensemble fini (ayant un nombre fini d'elements). La modelisation des ensembles infinis (ayant un nombre infinis d'elements) n'etant pas facile en informatique nous supposerons donc que E est fini, ce qui bien comode pour proposer des permutations... |
LeGreg | En Caml tu peux
definir type monType= Rien | Quelquechose;; mais "Rien" n'est pas une construction du langage ca n'a le sens de Rien que parce que je l'utilise ainsi dans mon programme. C'est purement binaire c'est 0 ou 1. (comme le type NULL en C, qui est different de void qui signifie une 'absence' de parametre) Quand tu as un objet de type monType qui vaut "Rien" ca reste un objet et il vaut quelque chose: il vaut "Rien", et il n'est pas vide (comment un objet ou un element peut-il etre vide si ce n'est pas un conteneur ou un ensemble?) Si MonType represente une liste ou un ensemble alors Rien peut signifier une liste vide mais ce n'est que parce que MOI j'ai decide de representer mes donnees ainsi. Bon c'est peut-etre embrouille comme explication mais j'espere que ca vous aura un peu eclaire. [HS] Quelqu'un se rappelle le passage d'Alice au pays des merveilles ou elle rencontre Humpty Dumpty? [/HS] A+ LEGREG |
gizmo | c'est ca.
Exemples de langages fonctionnels : ML, CaML, Eiffel (cas particulier car la compilation le transforme en C), Modula,... |
BENB |
|
gizmo | les langages fonctionnels utilisent ce concept. Un objet est défini par ce qu'il contient et ce qu'il contient peut ête le vide ou des éléments et le vide. |
BENB |
|
gizmo | oui, mais ce n'est pas en contradition avec la logique informatique de création de variable. Ces langages considèrent que tu vas pouvoir transformaer le vide en qqch, et donc acceptent de travailler aveuglément dessus. [edtdd]--Message édité par gizmo--[/edtdd] |
BENB |
[edtdd]--Message édité par BENB--[/edtdd] |
gizmo | en effet, c'est juste un concept, mais tout est-il que certains langages permettent de travailler sur le vide (donc même pas le Null ou le 0). |
BENB |
|
gizmo | 1° c'est de l'algo, donc il doit prévoir les cas de figure les plus complexes, et d'autre langage que le C++ acceptent un élément vide (les langages fonctionnels entre autre), donc la condition d'arret est a prévoir ou au moins a documenter.
2° c'était un exemple... 2° généralement c'est traduit plutot par foreach, qui a une autre signification que le for dans certains langages. 3° entièrement d'accord. |
BENB |
|
gizmo | ben ca dépend des objets avec lesquels tu travailles, si tu travailles avec une liste chainnée terminée par l'élément null (en c++), et bien si ta condition d'arret est mal concue, ton algo va boucler a l'infini. |
BENB |
[edtdd]--Message édité par BENB--[/edtdd] |
gizmo | a condition de ne pas considérer l'élément vide, oui. |
BENB |
|
gizmo | ouais, mais bon, avec une codition d'arret c'est quand même nettement mieux ;) |
flo850 | comme tu ne dis pas le langage , voici l'algo permutation(Ensemble E) { pour chaque e de E afficher e permutation (E-{e}) sauter une ligne } |
art_dupond | Salut les gens,
on donne "n", et je dois sortir toutes les permutations de 0 -> n-1. ex : n = 3 0 1 2 0 2 1 1 0 2 1 2 0 2 0 1 2 1 0 Je dois faire ca avec une fonction récursive, mais j'suis bloqué. Ca à l'air tout con, mais j'y arrive pas :( Quelqu'un peut me donner une piste ? :jap: ps : faut pas m'expliquer ce qu'est une fct recursive, ... |