je tente de mettre en œuvre Hofstadter's Q Sequence en utilisant la définition récursive:Forth, Séquence Hofstadter Q avec Recursion
Q(1) = 1
Q(2) = 1
Q(n) = Q(n - Q(n-2)) + Q(n - Q(n-1)) for n > 2
je reçois le mauvais résultat pour n > 3
. Voici ce que j'ai jusqu'à présent:
: Q recursive
dup 3 <
if
drop 1
else
dup dup 2dup 2 - Q - Q -rot 1- Q - Q +
then ;
Essayez en ligne:http://ideone.com/PmnJRO (Edit: Maintenant a fixe, la mise en œuvre correcte)
Je pense que cela ne fonctionne pas parce qu'il ya des valeurs ajoutées au empiler après chaque appel de Q
où n
est supérieur à 2
, rendant -rot
ne fonctionne pas comme prévu.
Existe-t-il un réglage simple pour que cela fonctionne? Ou dois-je utiliser une approche différente, peut-être en utilisant une variable pour n
?
OEIS: A005185