Une énigme de plus...

Description

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...

Codes Sources

A voir également

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.