Ir para o conteúdo
PuPax

Recursividade

Mensagens Recomendadas

PuPax    0
PuPax

Boas,

Alguém pode dar aqui uma ajuda para criar esta função:

"Função recursiva em C que verifique se uma tabela de inteiros está ordenada de

forma crescente. A função recebe como argumentos um ponteiro para a primeira posição da

tabela e o número de elementos que ela contém. Devolve 1 se a tabela estiver ordenada ou 0 no

caso contrário."

Cumprimentos.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

Comparas o primeiro elemento com o segundo, se o primeiro for maior que o segundo devolves zero, caso contrário chamas a própria função mas desta vez passas como argumento o array original a começar no segundo elemento.

Se o comprimento do array a passar for 1 então devolves 1.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Atenção, não passas o "array original a começar no segundo elemento", mas sim o apontador/ponteiro para o segundo elemento no array... De resto, é fazeres o que o pedrotuga disse.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

Uma cópia tambem funciona, mas não é de todo tão eficiente.

Outra coisa a ter em atenção... a verificação do comprimento deve ser a primeira coisa a fazer

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Sim, mas tendo em consideração o enunciado "A função recebe como argumentos um ponteiro para a primeira posição da

tabela" e se a função é recursiva, tens de passar um ponteiro para a posição seguinte...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

Se tiveres que manter a assinatura da função (com o array e o tamanho), acho que o exercício incentiva a desenvolver uma resolução de uma forma não muito "correcta". Eu acrescentaria mais um argumento à função que indicava a posição que queria verificar naquele momento (pois embora alterar o apontador do array seja bastante simples, é uma solução que eu vejo como um "truque" que a linguagem C permite).

A solução de copiar o array seria mais limpa do que andar a mexer nos apontadores (embora pudesse ser desastrosa em termos de eficiência).

É claro que numa disciplina e que o objectiva seja trabalhar em baixo nível, por vezes pretende-se mesmo que se ande a mexer nos apontadores.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

Se tiveres que manter a assinatura da função (com o array e o tamanho), acho que o exercício incentiva a desenvolver uma resolução de uma forma não muito "correcta". Eu acrescentaria mais um argumento à função que indicava a posição que queria verificar naquele momento (pois embora alterar o apontador do array seja bastante simples, é uma solução que eu vejo como um "truque" que a linguagem C permite).

:o Andar a mexer nos apontadores é das coisas que mais me atrai em C/C++. às vezes é atrofiante não ter a mesma facilidade em C#.

A solução de copiar o array seria mais limpa do que andar a mexer nos apontadores (embora pudesse ser desastrosa em termos de eficiência).

A mim parece-me o contrário. Andar a copiar o array de um lado para o outro parece-me muito mais "sujo" do que reutilizar a memória.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

A mim parece-me o contrário. Andar a copiar o array de um lado para o outro parece-me muito mais "sujo" do que reutilizar a memória.

Para mim é limpa porque te abstrais da plataforma em que estás a programar.

O algoritmo funciona em qualquer linguagem. É uma solução que qualquer um percebe. Já quando andas com apontadores, precisas de conhecer os truques do C.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade