Я использую Ruby v1.9.1 для написания программы с функцией Акермана для моего класса в университете. Код следующий:
def ackermann(n,m)
if n == 0 && m > 0
return m+1
elsif n > 0 && m == 0
return ackermann(n-1,1)
elsif n > 0 && m > 00
return ackermann(n-1,ackermann(n,m-1))
else
puts "Wrong input, m and n must be higher than 0"
end
end
puts ackermann(5,5)
Это высоко рекурсивная функция. Поэтому я получаю ошибку «слишком глубокий уровень стека (SystemStackError)». Есть ли какой-либо способ или обходной путь для исправления этой ошибки?