Poster un nouveau sujet Poster une réponse
Declarer une fonction
Auteur Message
pasdepsedo
Invité
Posté le : Mar 08 Déc 2009, 19:49   Citer 

Voila je me demandais comment fait-on pour déclarer une fonction comme dans le C...
J'en aurais besoin car je veux faire un programme sur la fonction d'ackermann, une fonction recursive qui s'écrit comme cela en C:

int ackermann(m,n)
if n==0 then
return m+1
elseif m==0 then
return ackermann(n-1,1)
else
return ackermann(n-1,ackermann(n,m-1))
merci !!!

  Haut de page Bas de page 
 
Wirekey



Autorisation : Membre
Nb de messages : 240
Inscrit le : Mer 17 Jui 2009, 0:54
Posté le : Mer 09 Déc 2009, 17:08   Citer 

Hum.. Jconnais pas le C ^^

Mais bon



Je comprend pas non plus ca ^^ notgood.gif

Explique le déroulement de ca fonction stp

m et n son des entier que tu doit rentrer ?

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Mer 09 Déc 2009, 17:17   Citer 

en basic pas besoin de déclarer la variable winkle.gif
en C ta variable est un tableau (il y a 2 valeurs)?

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Wirekey



Autorisation : Membre
Nb de messages : 240
Inscrit le : Mer 17 Jui 2009, 0:54
Posté le : Mer 09 Déc 2009, 17:40   Citer 

non en C ta variable est une variable normale jcrois ( il y a différent type float pour les reels int les entiers ... )

Pour moi sont programme resemblerais a :


Code
Input "M Un entier",M
Input "N Un entier",N
If partDéc(M) != 0 ou partDéc(N) !=0
Then
Disp "M OU N NON-ENTIER
Stop
End
If M=0
Disp "A(m,n)=",N+1
If M>0 et N=0
Disp "A(M,N)=A(M-1,1)
If M>0 et N>0
Disp "A(M,N)=","A(M-1,A(M,N-1))



 Adresse email Haut de page Bas de page 
 
Pasdepsedo
Invité
Posté le : Mer 09 Déc 2009, 22:16   Citer 

En fait c'est une fonction assez compliquée...
C'est une fonction à deux variables, des entiers positifs.
Elle est dite récursive car on doit l'utiliser a plusieurs reprises pour trouver la solution...
Exemple:
f(0,1) = 2 (par definition si m=0 alors la solution est n+1)
f(1,0) = f(0,1) = 2 (la encore par définition si n=0 f(m,n) = f(m-1,1) )
Maintenant un peu plus compliqué:
f(1,1) = f(0, f(1, 0)) (selon la troisieme règle) = f(0,2) = 3 (selon la 1ere regle...)
Maintenant beaucoup plus chaud:
f(2,2) = f(1, f(2, 1)) = f(1, f(1, f(2, 0))) = f(1, f(1, f(1,1))) = f(1, f(1, 3)) = f(1, f(0, f(1,2)))
= f(1, f(0, f(0, f(1,1)))) = f(1, f(0, f(0, 3))) = f(1, f(0, 4)) = f(1, 5) = f(0, f(1, 4))
= f(0, f(0, f(1,3))) = f(0, f(0, f(0, f(1, 2)))) = f(0, f(0, f(0, f(0, f(1,1))))) =
f(0, f(0, f(0, f(0, 3)))) = f(0, f(0, f(0, 4))) = f(0, f(0, 5)) = f(0,6) = 7 (ouf !!!)
Bravo a ceux qui ont tout suivi et encore plus a ceux qui ont tout compris...
Vous comprenez maintenant le terme de fonction recursive...
Pour culture le nombre f(3,3) est incalculable pour un humain sans se gourer quelque part, et
le nombre f(10,10) est tellement grand qu'il est impossible à écrire sous forme exacte sur du papier...
Utile si vous voulez impressionner votre prof de math à partir de la seconde... (au college personne ne pige et même les profs ne la connaissent peut-etre pas (ca dépend de certains))
Donc pour revenir a ma question si quelqu'un connait le C est ce que l'on peut établir une fonction en langage TI ? Cela m'etonnerai beaucoup que l'on puisse programmer cette fonction seulement avec de lbl et des boucles...

  Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Mer 09 Déc 2009, 22:38   Citer 

j'essaierait ça :

Alors là !
j'ai compris mais ce sera difficile a faire en basic...
J'y réfléchis...

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Wirekey



Autorisation : Membre
Nb de messages : 240
Inscrit le : Mer 17 Jui 2009, 0:54
Posté le : Jeu 10 Déc 2009, 22:17   Citer 

Hum ...

Jpense que c'est possible mais qu'il faudra :

De la mémoire
Des piles
De la patiente
...

Il faudrait déjà poser M et N <10 sinon on sera vite en dehors de la capaciter de la calculette notgood.gif

Je me penche dessus samedi

 Adresse email Haut de page Bas de page 
 
Pasdepsedo
Invité
Posté le : Jeu 10 Déc 2009, 23:33   Citer 

Oui mais surtout m < 5 : c'est m qui rend la fonction exponantielle. Sinon f(10,10) pour donner un ordre d'idee si on voulait le mettre sur un fichier texte il faudrait 10^(factorielle du nombre d'atomes dans l'univers) Teraoctets... Le truc impossible quoi...
En fait l'avantage dans le C pour ceux qui ne connAissent pas c'est qu'on peut en très peu de lignes rédiger une fonction que l'on peut réutiliser plusieurs fois sans avoir à la réecrire...

On doit d'abord définir la fonction:
int f(m,n) -- on crée la fonction
if m=0 -- on énonce les règles
return n+1 -- return est le nombre qui va etre "renvoyé" dans une variable en fonction des paramètres de la
fonction
elseif n=0
return f(m-1, 1) -- on demande si n=0 de remonter en haut de la fonction en remplacant m par m-1 et n par 1
else
return f(0,f(m,n-1) -- meme chose

En C on utilise une fonction comme ceci:
int variable = f(2,2)
les nombres 2,2 vont passer plusieurs fois à la machine à laver jusqu'a ce que l'on tombe sur un entier, (ici 7) qui sera mis dans la variable par un "return"
En fait je me demandais si ce "raccourci" n'existe pas en TI Basic...

  Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Ven 11 Déc 2009, 19:04   Citer 

je suis en train de faire un programme...
comment passes tu de f(1,f(1,f(1,1))) à f(1,f(1,3)) ???

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Ven 11 Déc 2009, 19:12   Citer 

dsl j'ai trouvé

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Ven 11 Déc 2009, 23:05   Citer 

Voilà :

Code
Prompt M
Prompt N
1->A
A->dim(Liste 1
For(B,1,9^99
If M=0:Then
N+1->N
A-1->A
If A<1:Goto F
Liste 1(A)->M
Else
If N=0:Then
M-1->M
1->N
Else
M-1->Liste 1(A
A+1->A
N-1->N
End
End
End
Lbl F
Disp N


c'est un peu long mais f(3,3)=61 !!!

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
dysto



Autorisation : Membre
Nb de messages : 200
Inscrit le : Mar 20 Oct 2009, 18:58
Posté le : Sam 12 Déc 2009, 8:43   Citer 

Et beh, si ça marche vraiment bien un grand bravo sypotu !!!
(Moi perso j'avais absolument rien pigé à sa demande xDDD !)

 Adresse email Haut de page Bas de page 
 
Pasdepsedo
Invité
Posté le : Sam 12 Déc 2009, 21:35   Citer 

Merci beaucoup ! J'ai été un peu rebuté au début devant l'apparante complexité de la fonction mais finalement ca tiens en peu de lignes... Si j'ai bien compris A c'est le nombre de "fonctions imbriquées" les unes dans les autres et la liste stocke les nombres qui correspondent au différentes imbrications ?
genre f=(0,f(1,f(1,2)
Si j'ai bien compris A vaut 3 et la liste contient: 0,1,1 et N vaut 2...

  Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Dim 13 Déc 2009, 8:25   Citer 

ouai c'est ça
juste le dernier m n'est pas dans la liste mais dans la variable M

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink