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.
  • 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 .
Alors je sais que la fonction puissance correspond à cela :
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;
je sais aussi que n MOD 2 = 0 seulement si n est pair et n MOD 2 = 1 seulement si n est impair.
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.