Fonction récursive et algorithme

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Manaus
Membre Naturel
Messages: 50
Enregistré le: 26 Fév 2014, 19:44

Fonction récursive et algorithme

par Manaus » 22 Avr 2014, 05:40

J'ai cette fonction récursive :
C(0) = 1
C(n+ 1) = ;) C(i). C(n - i)

Je dois calculer C(n) pour n ;) [1...5]
ensuite écrire un algorithme qui calcule C(n).

Je ne sais cependant pas du tout comment commencer pour calculer C(n) :mur:

Merci pour votre aide!!



Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 22 Avr 2014, 08:29

Bonjour,

On te demande en fait de calculer C(1), C(2), C(3), C(4) et C(5)

Pour le premier il suffit de remplacer dans la formule :



Pour C(2), même principe :



etc sachant que tu connais C(0)

Manaus
Membre Naturel
Messages: 50
Enregistré le: 26 Fév 2014, 19:44

par Manaus » 22 Avr 2014, 16:24

ampholyte a écrit:Bonjour,

On te demande en fait de calculer C(1), C(2), C(3), C(4) et C(5)

Pour le premier il suffit de remplacer dans la formule :



Pour C(2), même principe :



etc sachant que tu connais C(0)


Oh d'accord je vois! Je n'avais pas compris ça comme ça. Merci beaucoup :++:

As tu une idée pour l'algorithme?

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 22 Avr 2014, 16:28

Pour l'algorithme, il suffit d'appliquer ce que tu fais à la main.

Personnellement je verrais une double boucle :

- La première te permettant d'accéder à ton rang n et stockant le résultat de la seconde dans un tableau.

- La seconde te permettant de calculer pour chaque valeur de la boucle précédente, C(i) (donc jusqu'à ton C(n), ce que tu cherches).

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 22 Avr 2014, 16:41

elo,

ou bien juste appliquer betement la formule donnée :
Code: Tout sélectionner
procedure C(Entier n): Entier
 si n = 0
   retourner 1
 finsi
 Entier resultat = 0;
 pour i=0 à n
  Entier = Entier + C(i)*C(n-i)
 finpour
 retourner resultat
fin

c'est pas optimisé tout ca, mais c'est pas non plus demandé d'optimiser...
la vie est une fête :)

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 22 Avr 2014, 16:44

fatal_error a écrit:elo,

ou bien juste appliquer betement la formule donnée :
Code: Tout sélectionner
procedure C(Entier n): Entier
 si n = 0
   retourner 1
 finsi
 Entier resultat = 0;
 pour i=0 à n
  Entier = Entier + C(i)*C(n-i)
 finpour
 retourner resultat
fin

c'est pas optimisé tout ca, mais c'est pas non plus demandé d'optimiser...


Oui tout à fait, c'est vrai que la version récursif est sûrement plus visuelle, mais la version avec tableau est peut-être plus rapide (mais comme on ne cherche pas forcément une version optimisée ...).

Après vu le titre du sujet, je pense que ta solution est la plus pertinante =).

Manaus
Membre Naturel
Messages: 50
Enregistré le: 26 Fév 2014, 19:44

par Manaus » 22 Avr 2014, 18:21

Merci beaucoup à vous deux!! fatal error je pense que la solution que tu me propose est très bien

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 22 Avr 2014, 19:44

Tel quel :
Code: Tout sélectionner
procedure C(Entier n): Entier
 si n = 0
   retourner 1
 finsi
 Entier resultat = 0;
 pour i=0 à n
  Entier = Entier + C(i)*C(n-i)
 finpour
 retourner resultat
fin
j'ai un peu peur que ça boucle... un bon moment... vu que la fonction C(?) se réapelle elle même pour... la même valeur du paramètre (lorsque i=0 et i=n)

Manaus a pas précisé d'où à où il fallait faire la somme, mais un "somme de i=1 à n-1" semblerais plus plausible.
Ou alors c'est de 0 à n-1 et on fait le produit C(i)*C(n-1-i)
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 29 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite