[C] Probleme dans cette fonction
Résolu/Fermé
touf_truc
Messages postés
57
Date d'inscription
samedi 21 octobre 2006
Statut
Membre
Dernière intervention
23 avril 2007
-
15 févr. 2007 à 17:07
jro-daemon Messages postés 10 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 24 février 2007 - 16 févr. 2007 à 13:34
jro-daemon Messages postés 10 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 24 février 2007 - 16 févr. 2007 à 13:34
A voir également:
- [C] Probleme dans cette fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer dans word - Guide
- Fonction somme excel - Guide
- Fonction ms dos non valide - Forum Windows 8 / 8.1
5 réponses
touf_truc
Messages postés
57
Date d'inscription
samedi 21 octobre 2006
Statut
Membre
Dernière intervention
23 avril 2007
1
15 févr. 2007 à 17:57
15 févr. 2007 à 17:57
non;
on remplace la fonction
long int mystere(unsigned int n)
{
if (n==0) return 2;
else if (n==1) return 1;
return (2*mystere(n-1)+4*mystere(n-2));
}
par une autre fonction non recursive,
ou elle calcul mystere(n) par methode iterative
on remplace la fonction
long int mystere(unsigned int n)
{
if (n==0) return 2;
else if (n==1) return 1;
return (2*mystere(n-1)+4*mystere(n-2));
}
par une autre fonction non recursive,
ou elle calcul mystere(n) par methode iterative
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
16 févr. 2007 à 01:13
16 févr. 2007 à 01:13
Ok!
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
15 févr. 2007 à 17:37
15 févr. 2007 à 17:37
C'est bon a deux trois détails près
En particulier la fonction main doit retourner 0 quand tout va bien (par convention), et on peut préciser un peu les types (utiliser unsigned int autant que posible)
Bonne chance
#include <stdio.h> long int mystere(unsigned int n) { if (n==0) return 2; else if (n==1) return 1; return (2*mystere(n-1)+4*mystere(n-2)); } int main(){ int n; do{ printf("\nIntroduire un nombre : "); scanf("%d",&n); }while(n<0); printf("mystere de %d = %ld\n",n,mystere((unsigned int)n)); return 0; }
En particulier la fonction main doit retourner 0 quand tout va bien (par convention), et on peut préciser un peu les types (utiliser unsigned int autant que posible)
Bonne chance
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
15 févr. 2007 à 18:22
15 févr. 2007 à 18:22
Je t'en prie on te regarde :-) Et si tu peux faire apreil avec des suites de fibonacci ça m'intéresse aussi.
jro-daemon
Messages postés
10
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
24 février 2007
1
16 févr. 2007 à 01:01
16 févr. 2007 à 01:01
Salut,
pour les suites de Fibonacci en mode itératif, je propose ce code-ci:
Bon voilou. D'accord, c'est moins naturel que l'algo récursif c'est sûr mais bon, on y arrive.
Cordialement,
Johnny D.
pour les suites de Fibonacci en mode itératif, je propose ce code-ci:
#include<stdio.h> long fibonacci(unsigned int n) { long fnm2 = 0; //fibonacci de n moins 2. long fnm1 = 1; //fibonnaci de n moins 1. long fn; //fibonacci de n int i; if (n <= 1) fn = n else { for(i=2;i<=n;i++) { fn = fnm1 + fnm2; fnm2 = fnm1; fnm1 = fn; } } return fn; }
Bon voilou. D'accord, c'est moins naturel que l'algo récursif c'est sûr mais bon, on y arrive.
Cordialement,
Johnny D.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
16 févr. 2007 à 09:50
16 févr. 2007 à 09:50
Salut.
C'est clair, qu'il est toujours possible d'écrire une fonction récursive en itératif, après tout, ce n'est qu'une boucle.
La solution itérative est moins élégante, mais elle utilise moins de mémoire pour les grand nombres.
Pour les polynomes de legendre j'avai tester ces deux méthodes, et dans ce cas, l'itérative était en plus beaucoup plus rapide.
C'est clair, qu'il est toujours possible d'écrire une fonction récursive en itératif, après tout, ce n'est qu'une boucle.
La solution itérative est moins élégante, mais elle utilise moins de mémoire pour les grand nombres.
Pour les polynomes de legendre j'avai tester ces deux méthodes, et dans ce cas, l'itérative était en plus beaucoup plus rapide.
jro-daemon
Messages postés
10
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
24 février 2007
1
16 févr. 2007 à 13:34
16 févr. 2007 à 13:34
Salut,
En fait pour moi, itératif et récursif c'est la même chose. Le tout est de savoir quelle solution adoptée suite au problème auquelle on doit faire face. Le calcul récursif quelquefois en se "répétant" calcule des données qui sont parfois inutiles et qui peuvent coûter en mémoire si les calculs sont éxécutées un grand nombre de fois.
En fait, on dit à peu près la même chose. :-)
Cordialement,
Johnny D.
En fait pour moi, itératif et récursif c'est la même chose. Le tout est de savoir quelle solution adoptée suite au problème auquelle on doit faire face. Le calcul récursif quelquefois en se "répétant" calcule des données qui sont parfois inutiles et qui peuvent coûter en mémoire si les calculs sont éxécutées un grand nombre de fois.
En fait, on dit à peu près la même chose. :-)
Cordialement,
Johnny D.