ecrire un programme (pascal) qui calcule X puissance n ?!!!

ecrire un programme (pascal) qui calcule X puissance n ?!!! - Delphi/Pascal - Programmation

Marsh Posté le 12-12-2011 à 23:13:41    

ecrire un programme (pascal) qui calcule et affiche A puissance n (sans utiliser l'opperation de puissance ni de multiplication)(A et n sont des entires)
bon pour l'algorithme :
mult(1, x) = 1*x = x = x^1;
mult(mult(1, x), x) = mult(x, x) = x*x = x^2;
mult(mult(mult(1, x), x), x) = mult(x*x, x) = x*x*x ;
mult(fonction qui calcule x * y sans usitiliser multiplication)
 donc j'ai trouvé la methode, mais je ne sais pas comment la traduire en pascal
ex: 2^5=32
2²=2+2=4
2^3=4+4=8
2^4=8+8=16
2^5=16+16=32
 
exp(x, n) = 1 if n = 0 (and x is not 0)
exp(x, n) = mult(exp(x, n-1), x) if n is not 0  
mais comment traduirer cà en pascal ou delphi Svp aider moi ..
Merci.


Message édité par Esselami le 12-12-2011 à 23:14:39
Reply

Marsh Posté le 12-12-2011 à 23:13:41   

Reply

Marsh Posté le 03-01-2012 à 14:28:48    

1) écrire la fonction mult:
 
function mult(a,b: integer): integer;
begin
  mult:=a*b;
end
 
ensuite écrire la fonction exp qui est récursive:
 
function exp(x,n: integer) : integer
begin  
  if n=0 then exp:=1
  else  exp:=mult(exp(x,n-1), x)
end;
 
J'ai fait ca rapidement, donc à vérifier, mais j'ai du mal à comprendre le fait que tu n'utilise pas l'opérateur *, puisque tu fait une fonction pour le remplacer.
tu pourrais tout aussi bien écrire:
exp( mult(n,log(x)) )  
car: log(a^n)=nlog(a)
donc exp(log(a^n)=exp(nlog(a))
ps: désolé si je déterre un vieux sujet, je viens de voir la date...
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed