Syracuse

Contenu du snippet

selon syracuse, si un nombre est pair, on le divise par 2. si il est impair, on le multiplie par 3 et on ajoute 1.

ce prog montre la récursivité, et calcule le nombre d etapes et la hauteur maximum que le nombre atteint.

Source / Exemple :


#pragma hdrstop

#pragma argsused

#include <conio.h>
#include <iomanip.h>
#include <iostream.h>
int syracuse(int n, int *hauteur) ;
int _syracuse(int n, int *hauteur) ;

void main(void)
    {
    int n ;
    int hauteur ;
    int etapes ;

    cout << "************Syracuse************" << endl ;
    cout << endl << "entrez un nombre : " ;
    cin >> n ;

    etapes = syracuse(n, &hauteur) ;

    cout << endl << "hauteur : " << hauteur ;
    cout << endl << "etapes : " << etapes ;

    cout << endl << "appuyer sur une touche pour terminer..." ;
    getch() ;
    }
//---------------------------------------------------------------------------

int syracuse(int n, int *hauteur)
    {

  • hauteur = n ;
return _syracuse(n, hauteur) ; } int _syracuse(int n, int *hauteur) { if (n == 1) return 0 ; if (n%2) // impair { n = n*3+1 ; if (n> *hauteur)
  • hauteur = n ;
} else // pair n = n/2 ; cout << endl << "nombre : " << n ; return _syracuse(n, hauteur)+1 ; }

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.