Witam, chciałbym przerobić dwuargumentową funkcję Ackermana na metodę biorącą obiekt + jeden argument.
Funkcja dwuargumentowa działająca:
def ack(m, n)
if m == 0
n + 1
elsif n == 0
ack(m-1, 1)
else
ack(m-1, ack(m, n-1))
end
end
Przerobiona na obiekt + jeden argument:
[code] def ack(n)
m = self
m = m.to_int
if m == 0
n+1
elsif n == 0
m-1.ack(1)
else
m-1.ack(m.ack(n-1))
end
end
puts 2.ack(1)[/code]
I pytanie: dlaczego moja przeróbka nie działa?