Jump to content

Recursividade


PuPax
 Share

Recommended Posts

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Guest id194

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.

Link to comment
Share on other sites

Guest id194

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...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Desaparecido.

Link to comment
Share on other sites

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.

Link to comment
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
 Share

×
×
  • 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.