Bonjour à tous, merci de prêter attention à mon message.
Je me trouve en difficulté avec cet exercice. C'est un exercice donné à titre indicatif par mon professeur pour s'entraîner au concours. Cet exercice concerne la fonction puissance en TURBO PASCAL.Alors je sais que la fonction puissance correspond à cela :
- 1. On appelle la fonction puissance appliqué à un réel x quelconque et un entier n que l'on suppose impair et strictement supérieur à 1. Combien d'opérations élémentaires sont faites ?
- 2. Meme question avec n=1
- 3. Même question avec n=0
- 4. On s'intéresse désormais au nombre N d'appels de la fonction puissance lorsqu'on appelle puissance (x,n) (l'appel initial de puissance (x,n) ne compte pas)
- a) Lors de l'appel de puissance(x,4) montrer que la fonction puissance est appelée 2 fois. On pourra détailler les opérations faites avec un arbre.
- b) Même question avec puissance (x,7)
- c) A partir de maintenant, n est un entier naturel quelconque. On note alors (ak) la suite des puissances que l'on utilise lors de l'appel de puissance (x,n). Par exemple, si n=9, alors a0 = 9, a1=(9-1)/2 =4, a2=4/2=2, a3=2:2=1 et on s'arrete ici : pour calculer puissance (x,1) aucun appel de puissance n'est effectué ( si on continuait on aurait a4=0, a5=0/2=0 , ... ) . Ainsi puissance(x,9) nécessite 3 appels de la fonction puissance.
De façon formelle, on définit la suite (ak) par a0=n et
pour tout k appartenant à N , ak+1 = ak/2 si ak est pair et (ak-1)/2 sinon .
A) Montrer que pour tout k appartenant à N, ak est un entier naturel .
je sais aussi que n MOD 2 = 0 seulement si n est pair et n MOD 2 = 1 seulement si n est impair.
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
17
18
19
20
21 function puissance(x:real ; n:integer) : real ; var u : real ; begin if n>1 then begin if ( n MOD 2 ) = 0 then begin u:=puissance ( x, n DIV 2 ) ; puissance := u*u ; end else begin u := puissance (x, (n-1) DIV 2); puissance := u*u*x end ; end else begin If n=0 then puissance :=1 else puissance := x ; end; end;
Opérations élementaires : addition , multiplication, soustraction, division, affectation, appel à une fonction ou à une procédure (dont utilisation de MOD et DOV), comparaison.
Si il y a quelques as de Pascal qui peuvent élucider mon problème je serais fort ravie. Bien cordialement. Aurélie. Bonne journée à vous.
Partager