Я сделал код башни Ханойской проблемы с рекурсией и запустил ее на онлайн-компиляторе lua.Если я поставлю ввод более 14, он не запустится.
local num = io.read("*n")
local count = 0
function hanoi(n, st, mid, dst)
if n == 1 then
count = count + 1
print(st, dst)
else
hanoi(n-1, st, dst, mid)
count = count + 1
print(st, dst)
hanoi(n-1, mid, st, dst)
end
end
hanoi(num, 1, 2, 3)
print(count)
Я думаю, что это можно решить с помощью правильного хвостового вызова, но, насколько мне известно, правильный хвостовой вызов должен возвращать ту же функцию.Но в этом коде есть две функции "Ханоя" в рекурсивном.
Так что это правильный вызов хвоста в lua?
function f(args)
return f(args_1), f(args_2)
end
И есть лиспособ сделать правильный вызов из Ханоя проблемы?