[C] Probleme dans cette fonction
Résolu
touf_truc
Messages postés
57
Date d'inscription
Statut
Membre
Dernière intervention
-
jro-daemon Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
jro-daemon Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
bonsoir;
mystere est une fonction recursive, esque je peux l'ecrire la fonction mystere d'une façon non recurcive?
#include<stdio.h>
long int mystere(int n)
{
if(n==0)
return 2;
else
if(n==1)
return 1;
else
return (2*mystere(n-1)+4*mystere(n-2));
}
main()
{
int n;
do
{
printf("\n Introduire un nombre : ");
scanf("%d",&n);
}
while(n<0);
printf("\n mystere de %d = %ld ",n,mystere(n));
}
mystere est une fonction recursive, esque je peux l'ecrire la fonction mystere d'une façon non recurcive?
#include<stdio.h>
long int mystere(int n)
{
if(n==0)
return 2;
else
if(n==1)
return 1;
else
return (2*mystere(n-1)+4*mystere(n-2));
}
main()
{
int n;
do
{
printf("\n Introduire un nombre : ");
scanf("%d",&n);
}
while(n<0);
printf("\n mystere de %d = %ld ",n,mystere(n));
}
A voir également:
- [C] Probleme dans cette fonction
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer dans word - Guide
- Fonction somme excel - Guide
5 réponses
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
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
Je t'en prie on te regarde :-) Et si tu peux faire apreil avec des suites de fibonacci ça m'intéresse aussi.
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
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.
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.