Apparemment c'est la saison des énigmes sur Delphifr, donc j'ai décidé d'apporter ma contribution. On définit cette suite dans le programme:
u(0)=0
u(n)=n-u(u(n-1))
Question: que va afficher ce programme lorsqu'on lui donne un nombre entier positif? Le résultat est assez étonnant, du moins je trouve...
La démonstration se trouve en PDF dans le zip, et je pense qu'elle est compréhensible au niveau 1ère ou 2ème année de DEUG de maths, voir avant pour les plus avancés ;-)
Source / Exemple :
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
function u(n:Integer):Integer;
begin
if n=0 then
Result:=0
else
Result:=n-u(u(n-1));
end;
procedure Main;
var
s:string;
n:Integer;
c:Cardinal;
Phi:Double;
begin
Phi:=(1+Sqrt(5))/2; { Le nombre d'or }
repeat
WriteLn('');
WriteLn('');
WriteLn('Entrer un nombre entier n');
ReadLn(s);
if s<>'' then begin
Val(s,n,c);
if c>0 then begin
WriteLn('Nombre invalide');
Continue;
end;
WriteLn(Format('u(n)-Int(Frac(phi)*(n+1))=%f',[u(n)-Int((n+1)*Frac(Phi))]));
end;
until s='';
end;
begin
Main;
end.
Conclusion :
Un intervalle raisonnable pour n est [0,200]. Si n est négatif, le programme boucle, si n est plus grand que 200 ça va mettre beaucoup de temps...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.