rekursive ---

Moin,

heute frag ich mal. Findet jemand den Fehler, warum

with recursive collatz(n,c) as (
  select 1 as n, 3 as c
  union all
  select n+1, case when ((c%2) = 0) then (c)/2 else (c*3+1)/2 end  from collatz where c > 1)

select * from collatz limit 20;

nicht das liefert, was ich nach Collatz-Vermutung: Deutscher Mathematiker meldet Lösung für Zahlenrätsel - SPIEGEL ONLINE - Nachrichten - Wissenschaft erwarte?

Andreas

Dein Union lässt doch in jedem “Durchlauf” die Anfangszahl eins hochzählen.
Daher hast du in jedem Durchlauf eine andere Betrachtung, nur nicht die zur Zahl, die du suchst.
Als Ergebnis hast du auch nur 6 Zeilen, nicht 20 wie gewünscht.

Bah, mein Fehler, so funktioniert es:

with recursive collatz(n,c) as (
  select 1 as n, 7 as c
  union all
  select n+1, case when ((c%2) = 0) then (c)/2 else (c*3+1) end  from collatz where c > 1)

select * from collatz limit 20;

Danke, jetzt sehe ich auch mein Fehler. In der Formel, nicht im SQL …

Andreas