IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Suite et Récursivité


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 109
    Par défaut Suite et Récursivité
    Bonjour,

    Je suis entrain de faire un programme récursil d'une suite dans la quelle je souhaite calculer le n-ème terme de cette suite avec comme condition :

    U(0)=3
    U(n+1)= 2*U(n)-2

    Voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <stdio.h>
    intmain(){
     
    int U (int n ) {
    int U=3,i;
    for(i=0;i<n;i++)
    U=2*U-2
    return U ;
    }
     
    int n;
    printf("Entrez le n-ème terme : ");
    scanf("%d",&n);
    printf("Résultat : U(%d)=%d",n,U);
    system("pause");
    }



    Or lorsque je compile avec DEV C++ une erreur m'est indiquée à la ligne 8 ( " return U " ) :syntax error before return pourquoi ?

    Sachant que par la suite je désirerais afficher tous les résultat allant de 0 à n, j'ai penser utiliser un while suis-je sur la bonne piste ?

    DSl il manquait un ";" ici : U=2*U-2 ;

    Mais pourquoi rien ne se passe lorsque j'exécute mon programme ?
    Voila le message que j'ai lorsque je compile mon bout de code :

    [linker error] undefined reference to 'WinMain@16'
    Id returned 1 exit status

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Je reformatte pour que cela soit plus clair:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <stdio.h>
    intmain(){  // 1
     
    int U (int n ) {
       int U=3,i; // 2
       for(i=0;i<n;i++)
          U=2*U-2  //3
       return U ;
    }
     
    int n;
    printf("Entrez le n-ème terme : ");
    scanf("%d",&n);
    printf("Résultat : U(%d)=%d",n,U); // 4
    system("pause");
    }
    1 - int main (void) serait plus correct.
    2 - Dans la fonction U(int) on déclare la variable locale U: tu travailles pour l'industrie pharmaceutique?
    3 - Bon est ce récursif???
    4 - Appeler U, s'écrit U(n)...

    Un truc récursif serait plutôt du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int U(int n) 
    { 
        if (n == 0) 
            return 3;
        return 2 * (U(n-1) - 1);
    }
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <stdio.h>
    intmain(){
     
    int U (int n ) {
    int U=3,i;
    for(i=0;i<n;i++)
    U=2*U-2   
    return U ;
    }
     
    int n;
    printf("Entrez le n-ème terme : ");
    scanf("%d",&n);
    printf("Résultat : U(%d)=%d",n,U);
    system("pause");
    }
    C ne permet pas (en standard) de définir une fonction (U) à l'intérieur d'une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int U (int n ) {
    int x=3,i;    // ne pas utiliser U qui est le nom de la fonction
    for(i=0;i<n;i++)
    x=2*x-2     // effectivement, il manque un ;
    return x ;
    }
    int main(void){ // utiliser copier/coller pour éviter ces erreurs
    int n;
    printf("Entrez le n-ème terme : ");
    scanf("%d",&n);
    printf("Résultat : U(%d)=%d",n,U(n));
    system("pause");
    }
    linker error] undefined reference to 'WinMain@16'
    Voir ici

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 109
    Par défaut
    merci pour vos réponses! j'étais justement entrain de travailler dessus et avant de lire vos réponses j'ai réussi à résoudre ce probleme en mettant simplement int main au lieu de intmaim comme vous me l'avez dit et tout marche pourtant très bien comme sa...
    normal ?

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Tu sais que tu peux calculer directement le terme général de ta suite par U(n) = 2^n*U(0) - 2^(N+1) - 2

    Ce qui se simplifie dans le cas U(0) = 3 en U(n) = 2^n - 2

Discussions similaires

  1. Cours : algorithmes et récursivité
    Par Community Management dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 17/10/2018, 00h38
  2. Réponses: 13
    Dernier message: 22/06/2006, 09h00
  3. Migration Access > SQL Server (suite) : Compteur
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2003, 14h08
  4. Réponses: 2
    Dernier message: 04/03/2003, 23h24
  5. Pb BDE suite a passage en Windows 2000 pro
    Par ARIF dans le forum Paradox
    Réponses: 4
    Dernier message: 18/11/2002, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo