Я пытаюсь преобразовать свою рекурсивную функцию Фибоначчи в итерационное решение. Я попытался следующие:Что случилось с моей реализацией Фибоначчи?
fib_itt :: Int -> Int
fib_itt x = fib_itt' x 0
where
fib_itt' 0 y = 0
fib_itt' 1 y = y + 1
fib_itt' x y = fib_itt' (x-1) (y + ((x - 1) + (x - 2)))
Я хочу, чтобы сохранить результат в переменную y
и вернуть его, когда x
y
матчи с 1
y
, но он не работает, как ожидалось. Для fib_itt 0
и fib_itt 1
он работает правильно, но для n > 1
он не работает. Например, fib_rek 2
возвращает 1
и fib_rek 3
возвращает 2
.