begin process at 2008 05 17 10:20:26
1 173 942 membres
72 nouveaux aujourd'hui
13 973 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PAIR-IMPAIR RÉCURSIF


Information sur la source

Catégorie :.Net Classé sous : nombre, chiffre, pair, impair, récrusif Niveau : Débutant Date de création : 16/01/2003 Date de mise à jour : 16/01/2003 09:38:14 Vu : 4 007

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

détermination de la parité d un nombre sans utiliser le modulo

Source

  • #pragma hdrstop
  • #pragma argsused
  • #include <conio.h>
  • #include <iomanip.h>
  • #include <iostream.h>
  • int pairImpair(int n) ;
  • void main(void)
  • {
  • int nombre ;
  • int ret ;
  • cout << "entrez un nombre : " ;
  • cin >> nombre ;
  • ret = pairImpair(nombre) ;
  • if (ret == 1)
  • cout << endl << "le nombre " << nombre << " est impair ! " ;
  • else
  • cout << endl << "le nombre " << nombre << " est pair ! " ;
  • cout << endl << "appuyer sur une touche pour terminer..." ;
  • getch() ;
  • }
  • //---------------------------------------------------------------------------
  • int pairImpair(int n)
  • {
  • if (n == 0 || n == 1)
  • return n ;
  • return pairImpair(n-2) ;
  • }
#pragma hdrstop

#pragma argsused

#include <conio.h>
#include <iomanip.h>
#include <iostream.h>

int pairImpair(int n) ;

void main(void)
    {
    int nombre ;
    int ret ;

    cout << "entrez un nombre : " ;
    cin >> nombre ;

    ret = pairImpair(nombre) ;

    if (ret == 1)
        cout << endl << "le nombre " << nombre << " est impair ! " ;
    else
        cout << endl << "le nombre " << nombre << " est pair ! " ;

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

int pairImpair(int n)
    {
    if (n == 0 || n == 1)
        return n ;

    return pairImpair(n-2) ;
    }
  • signaler à un administrateur
    Commentaire de GoldenEye le 16/01/2003 16:45:20

    J'ai une autre méthode bien plus puissante qui est utilisée pour tout ce qui est temps réel (jeux par exemple):

    inline int estPair(int nombre) /* 0 si le nombre est pair et 1 sinon */
    return (nombre&1);

    Cherchez pourquoi ! (pensez à la base 2 et à l'opération ET logique...)

    On peut étendre le calcul à la détermination de l'existence d'un multiple de 2 puissance n

  • signaler à un administrateur
    Commentaire de trinitacs le 16/01/2003 19:14:54

    loraine9999 &gt;&gt; A part la récursivité tu fais quoi? Je te signale juste si tu ne le c'est pas mais c qqch de pas très rapide. Mais parfois ça permet de résoudre des problèmes très simplement. Donc il ne faut pas en faire d'overdose :)

    J'en ai une autres c'est le modulo de 2 mais faire un modulo est une opération longue pour les pross. Mais bon la méthode avec l'utilisation de l'opérateur & est bien plus rapide.

  • signaler à un administrateur
    Commentaire de GoldenEye le 16/01/2003 20:02:35

    Trinitacs : attention, la récursivité est parfois optimale : ex : l'algorithme de tri QuickSort dont la complexité en Nlog(N) est inférieure à celle de toutes les méthodes itératives. Par ailleurs certains problèmes n'ont pas de solution connue en itératif ou très complexe (ce qui ne veut pas dire qu'elle n'existe pas) ex : parcours d'un arbre, algorithmes d'IA comme Alpha Beta etc...

  • signaler à un administrateur
    Commentaire de trinitacs le 18/01/2003 23:52:56

    Je n'ai pas dis non plus que la récursivité était à proscrire. J'ai aussi dis que ça permettait parfois de résoudre simplement des problèmes comme tu l'as signalé.

    Voilà

  • signaler à un administrateur
    Commentaire de dominion le 06/09/2004 22:25:16

    GoldenEye : mets plutôt inline BOOL estPair pour gagner un peu de place mémoire (ben oui vu qu'il n'y a que 2 réponses...)

  • signaler à un administrateur
    Commentaire de tit_toinou le 18/12/2007 18:43:31

    Salut,
    La recursivité est tout à fait inutile ici !
    L'opérateur & fera le travail beaucoup plus vite.

  • signaler à un administrateur
    Commentaire de turnerom le 19/03/2008 15:51:09 1/10

    Je me demande si on peut encore faire - rapide.

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS