2014-02-08 3 views
0

Каталонских числа удовлетворяют рекуррентныйКаталонские номера в функциональных языках

Catalan Recurrence

Конечно Каталонский номер имеет замкнутую форму выражения с участием биномиальных коэффициентов. Также мы можем выразить C_n только через C_ ​​{n-1}. Мне интересно, как можно реализовать такой сверток в функциональных языках, таких как SML или Haskell.

+0

Вы еще что-нибудь попробовали? –

+0

@OliCharlesworth: Я даже не знаю с чего начать. – Kuai

+6

Но в равной степени мы даже не начинаем помогать вам. Пожалуйста, будьте более конкретными в том, что в настоящее время блокирует вас. –

ответ

1

Конечно, вы можете реализовать каталитические числа в haskell (и я думаю, что ml-family достаточно мощный)!

Но я думаю, что это не тот ответ, который вы искали. Поэтому я надеюсь, что вы знакомы с основным синтаксисом haskell о каталитических числах как функциях catalan :: Int -> Int любая серия натуральных чисел является такой функцией (хорошо для небольших индексов). Но поскольку каталитические числа растут довольно быстро, я выберу для кодомена нашей функции тип Integer s (= произвольные большие интегральные числа).

catalan :: Int -> Integer 
catalan 0 = 1 
catalan n = sum [ ?catalan magic? | i <- [1..n]] 

Я знаю, что я почти решил проблему, но есть еще каталанская магия ;-) вам нужно делать самостоятельно.

Но прежде, чем я остановлюсь несколько предостережений

  • этого вариант расчета каталонских чисел далеко от оптимального или эффективного
  • случае отрицательных значений входных не заботятся.
+0

p.s. другое решение может включать функции 'zipWith',' reverse', '(*)' и, конечно, 'sum' – epsilonhalbe

+1

В Haskell вы, вероятно, просто создадите бесконечный список всех каталитических чисел. Предполагая, что вы ограничиваете тип '[Integer]', это также может дать вам меморандум. – Carl

+0

Вот что я собирался сказать в своем комментарии - только менее явно, чтобы @ Куай мог чему-то научиться – epsilonhalbe

Смежные вопросы