Jump to content
Luís Paiva

linha do triangulo de pascal

Recommended Posts

Luís Paiva

Boas, o exercício pede: "Defina uma função void pascal (int v[], int N) que preenche o vector v com a N-ésima linha do triângulo de Pascal."

eu fiz isto:

int pascal (int v[], int N) {
    if(N == 1) v[0] = 1;
    else {
        int prevLine[N - 1];
        pascal(prevLine,N-1);
        v[0] = 1;
        v[N - 1] = 1;
        for(int i = 1; i < N - 1; i++) {
            v[i] = prevLine[i - 1] + prevLine[i];
        }
    }
    return *v;
}

int main(){
    int u[3] = {};
    printf("%d", (pascal(u,2)));
}

na função main está apenas um exemplo. Alguém me consegue ajudar no programa? Obrigado

Share this post


Link to post
Share on other sites
thoga31

void pascal(int v[], int N)? Qual o tamanho de v? Como é definido anteriormente? É dito que a função pascal tem de ser recursiva?

Sem saber mais informações, eu faria de outra forma. Um exemplo rápido (que pode porventura ser melhorado ou implementado de outra forma):

int *pascal(int n) {
    int *v = malloc(n * sizeof(*v));
    if (v == NULL)
        return NULL;
    for (int i = 0; i <= n / 2; i++)
        v[i] = v[n-i-1] = comb(n, i);  // 'comb' é a função combinatória (a ser implementada)
    return v;
}

Cumprimentos.


Knowledge is free!

Share this post


Link to post
Share on other sites
Luís Paiva

@thoga31 Obrigado pela resposta. O tamanho de v vai ser igual à linha pedida porque no triângulo de Pascal a n-ésima linha tem também n elementos. Não é dito que a função tem de ser recursiva. Como farias a função comb? E porque farias de outra forma?

Share this post


Link to post
Share on other sites
thoga31
Em 11/05/2019 às 12:28, Luís Paiva disse:

E porque farias de outra forma?

Porque é possível fazer de forma bastante mais eficiente do que como estavas a fazer, que é um método recursivo.

Em 11/05/2019 às 12:28, Luís Paiva disse:

Como farias a função comb?

Aplicando, por exemplo, a fórmula da combinação sem repetição: (n p) = n! / (p!(n-p)!).


Knowledge is free!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.