У меня есть функцияF # Интересное поведение функции
// Will perform a given function twice
let twice f = (fun x -> f (f x))
Тогда у меня есть что-то подобное.
// Take x add 1
let f x = x+1
В зависимости от того, как я называю дважды, он ведет себя по-разному, чтобы левая ассоциативность.
(twice (twice (twice (twice f)))) 0;; // Outputs 16
twice twice twice twice f 0;; // Outputs 65536
Если я добавить еще дважды моя программа делает StackOverflow, но до сих пор, кажется, ведут себя без рисунка, который сводит меня с ума.
Позволяет k быть числом twice
.
Для того, чтобы получить ответ, вы получите нетоварный 2^k.
Curried чрезвычайно странный. Гипотеза 1: Когда число вызовов меньше, чем 4 выглядит как 2^(2^(к-1)), но при к 4 она ведет себя как 2^(2^к)
ли кто-нибудь увидеть шаблон? Или вы можете запустить его мимо k = 4, чтобы доказать это?
Хотя это интересная головоломка, я не верю, что это подходящий форум для обмена такого рода вещами. Голосовать, чтобы закрыть. –
Пожалуйста, объясните. –
«Я отправлю ответ в 24 часа, если этого не будет. Удачи!» Есть сайты для программирования головоломок; StackOverflow не такой сайт. –