Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Os números de Catalan são definidos pela seguinte recursão:
/applications/core/interface/imageproxy/imageproxy.php?img=http://i.imgur.com/oW8lRqt.png&key=7fffaa92a218643f8964a59789704a89628aab4376ec8a9f74f7910b7453235c" alt="oW8lRqt.png" />
Alguns números desta sequência são: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786... Faça uma função recursiva que receba um número N e retorne o N-ésimo número de Catalan.
#include <stdio.h>
float catalan(int);
int main ()
{
int n=4;
printf("%.2f", catalan(n));
}
float catalan(int n)
{
if(n==0)
{
return 1;
}
else if(n>0)
{
return 2*((2*n) - 1)/(n+1)*catalan(n-1);
}
}
Consegui fazer tudo corretamente, até fiz um teste de mesa com o meu algoritmo para verificar se estava realmente correto e deu tudo certo. Contudo, quando foi compilar deu erro, os números que estão sendo calculados estão errados. Ao informar o número 4, por exemplo, o resultado informado é 8, quando na verdade deveria ser 14.
Carregando comentários...