• Aucun résultat trouvé

TP2 Programmation Java

N/A
N/A
Protected

Academic year: 2022

Partager "TP2 Programmation Java"

Copied!
1
0
0

Texte intégral

(1)

TP2 Programmation Java

Exercice 2.1

Le PGCD (plus grand commun diviseur) de deux entiers a ≥ 0 et b ≥ 0 est l’un des premiers algorithmes de l’histoire de l’humanité. Dû à Euclide (« Éléments », Livre VII, vers –300 de notre ère), ce dernier proposait (en langage moderne !) de le calculer de la manière suivante : « Si je divise a par b, alors a = bq + r (0 ≤ r < b), et je dis que calculer le PGCD de a et b revient à calculer celui de b et de r, jusqu’à ce que b soit égal à 0 »…

a) Exécutez cet algorithme avec a = 54 et b = 138 (vous avez le droit a une calculatrice).

Notez que le maximum se met en tête tout seul… Quel est le PGCD ?

b) Programmez une méthode pgcd(a,b) qui calcule par récurrence le PGCD de a et de b.

Exercice 2.2

Écrire le programme qui calcule le nième terme de la suite de Fibonacci : u0 = u1 = 1

un = un-1 + un-1 pour n > 1

en utilisant une fonction récursive (méthode statique) Exercice 2.3

Écrire le programme qui calcule le nième terme de la fonction de Newman-Conway : u1 = 1

un = uu_(n-1) + un-u_(n-1) pour n > 1 Exercice 2.4

a) Lors d’un apéritif, un nombre n de personnes se rencontrent. Chaque personne serre la main à chacun des autres convives. Programmez une méthode shakeHand(n) qui renvoie le nombre total de serrements de mains échangés. Par exemple, shakeHand(4) vaut 6. Combien trouvez-vous de serrements de mains pour 20 personnes ?

b) Expliquez pourquoi shakeHand(n) est un polynôme en n que l’on déterminera.

Exercice 2.5

a) Programmez par récurrence une méthode sommeChiffres(n) prenant un entier n ≥ 0 et renvoyant la somme des chiffres de n (en base 10). Par exemple sommeChiffres(3627) vaut 18.

b) Programmez par récurrence une méthode premierChiffre(n) prenant un entier n ≥ 0 et retournant le premier chiffre de n (en base 10). Par exemple, premierChiffre(3267) vaut 3.

Exercice 2.6

Quel est le résultat de foo(3) avec la méthode récursive foo ci-dessous ? int foo(int x) {

int res;

if (x <= 0) return 0;

res = x;

res = res + 2 * foo(x-1);

res = res + 3;

return res;

}

Références

Documents relatifs

Je trouve le parcours de Nicolas Gaude inspirant : de formation initiale en physique, il s’est formé tout seul en science des données, est désormais chief data scientist à

Fascinante et redoutable perspective que la communauté scientifique estime encore bien incertaine, bien lointaine en tout cas, et dont Hubert Haddad préci- pite l'échéance dans

La bonne nouvelle est que ces germes peuvent facilement être éliminés par une bonne hygiène des mains, c’est-à-dire la bonne façon de procéder pour avoir les mains propres..

CRÈME ANTISEPTIQUE ET PARFUMÉE POUR LE LAVAGE HYGIÈNIQUE DES MAINS AVEC RINÇAGE. • Action bactéricide (EN 1276, EN 1499), fongicide (EN 1650) et virucide

TDM thoracique: atteinte infiltrante pulmonaire modérée à prédominance postéro-basale, sans fibrose mutilante, faite de réticulation intralobulaire et de verre dépoli. EFR: CV

L’atelier sera le lieu d’expériences et d’observations pour nourrir la réflexion et la pratique des jardiniers sur la biodiversité des sols et les solutions écologi-

mouvement d’avant en arrière exercé par la paume de la main droite, et vice versa ;. Les espaces interdigitaux, paume contre paume et doigts entrelacés, en exerçant un

QUAND ? Pratiquer l’hygiène des mains en quittant l’environnement du patient, après en avoir touché un objet ou du mobilier, à l’exclusion de tout contact avec le