ошибся
есть функция числа фибоначчи в 2 версиях
правильная:
fibonacci :: Int -> Int
fibonacci 0 = 0
fibonacci 1 = 1
fibonacci n = fibonacci (n - 1) + fibonacci (n - 2)
и неправильная:
fibonacci :: Int -> Int
fibonacci 0 = 0
fibonacci 1 = 1
fibonacci n = (fibonacci n - 1) + (fibonacci n - 2)
неправильная уходит в бесконечный цикл или что-то вроде того
почему неправильная версия, ну, неправильная?
Precedence у вызова функции выше чем у операторов. То есть: (fibonacci n - 1) + (fibonacci n - 2) работает так ((fibonacci n) - 1) + ((fibonacci n) - 2)
да, понял, спасибо
в неправильной неправильные скобки, и соотвественно береться каждый раз Н
Обсуждают сегодня