Я пытаюсь написать функцию в R, которая будет принимать входные данные numb
и выводить соответствующее каталонское число.К вашему сведению, рекурсивная формула для каталонских номеров :
C_0 = 1;
C_n = {(4n - 2)*C_(n-1)}/(n+1)
Мой код выглядит следующим образом:
catalan_num_recr <- function(numb){
if (numb == 0){
return(1)
}
else
return(((4*numb-2)*catalan_num_recr(numb-1))/(numb+1))
}
Когда я запускаю функцию, я получаю,
> catalan_num_recr(3)
[1] 5
Что правильно.
AIM : Тем не менее, я пытаюсь найти каталонские числа для диапазона, я хотел бы найти что-то вроде catalan_num_recr(1:10)
.
ПРОБЛЕМА : Это не работает с моей функцией, я получаю следующее предупреждение,
Warning messages:
1: In if (numb == 0) { :
the condition has length > 1 and only the first element will be used
и много неправильных значений в качестве вывода,
> catalan_num_recr(1:15)
[1] 1.000000 2.000000 2.500000 2.800000 3.000000 3.142857 3.250000
[8] 3.333333 3.400000 3.454545 3.500000 3.538462 3.571429 3.600000
[15] 3.625000
Может ли кто-нибудь помочь мне изменить мою функцию или помочь мне разобраться в проблеме?
С уважением.