Par exemple, l'on pourrait construire l'expression non récursive de chaque terme pour ne l'évaluer qu'à la fin.
Ici pour HP Prime :
- Code: Select all
EXPORT algo2(n)
BEGIN
local s,k;
s:="1";
PRINT({0,EXPR(s)});
FOR k FROM 1 TO n DO
s:=s+"-LN(1+"+s+")";
PRINT({k,EXPR(s)});
END;
RETURN s;
END;
Et ben non, même pas, c'est toujours aberrant dès le rang 5 :
Utilisons alors l'astuce donnée par parisse plus haut :
- Code: Select all
EXPORT algo3(n)
BEGIN
local s,k;
s:="1";
PRINT({0,EXPR(s)});
FOR k FROM 1 TO n DO
s:=s+"-LNP1("+s+")";
PRINT({k,EXPR(s)});
END;
RETURN s;
END;
Aberrant à partir du rang 6 mais nettement moins on va dire, et ça permettait (par chance) de répondre juste à l'exemple du sujet, mais toujours pas satisfaisant :