pour une precision de 0.0001, le programme s'arrete pour n=12, donc fait le calcul
Fred999
C'est (1 + sqrt(5)) / 2 la réponse non? :D
BifaceMcLeOD
Oui, après, il faut utiliser des réels... (en particulier pour le problème de convergence)
cobra1000000
j'ai compris le premier,le deuxieme est plus tordu.merci
cobra1000000
je te remercie, maintenant je vais essayer de comprendre le programme.@+
darkoli
mais c'est tout facile
Code :
function fibo(p:integer):int64;
var u:int64;
u1:int64;
u2:int64;
i:integer;
begin
u:=0;
u1:=2;
u2:=1;
for i:=3 to p do
begin
u:=u1+u2;
u2:=u1;
u1:=u;
end;
fibo:=u;
end;
function nbor(p : double):integer;
var u:int64;
u1:int64;
u2:int64;
i:integer;
fu : double;
fu1 : double;
v : double;
begin
u:=0;
v:=0;
u1:=2;
u2:=1;
i:=2;
repeat
inc(i);
u:=u1+u2;
u2:=u1;
u1:=u;
fu:=u;
fu1:=u2;
fu:=fu/fu1; // Vn
fu1:=abs(fu-v); // approximation de l'erreur
v:=fu; // on memorise Vn pour le tour suivant
until ((fu1<p) or (i>91));
nbor:=i;
end;
attentin j'ai utilisé des int64 : entier sur 64 bits mais pour la suite de fibo... il ne faut pas faire plus de 91 iterations, sinon on depasse la limite.
pour n=91, Un=7 540 113 804 746 346 429
[edit]--Message édité par darkoli--[/edit]
funwebmax
ça a l'air d'etre plutot des maths :hap:
cobra1000000
:spookie: Les nombres suivants forment une suite appelle "suite de fibonacci": U1=1, U2=2, U3=3, U4=5, ..., Un=U(n-1)+U(n-2) n>3
a) Ecrivez un programme en turbo pascal qui calcule le nieme terme Un. b) On montre que, lorsque n augmente, le rapport Vn=Un/Un-1 tend vers une limite appellée "nombre d´or". Modifiez le programme precedent pour obtenir une valeur approchée de ce nombre avec une precision e=10^-4. Vous considérez que cette precision est atteinte des que abs(Vn-V(n-1))<e.
je seche ! si quelqu´un pouvait mettre la reponse merci!!