Pular para o conteúdo

Recursividade [Dúvida] [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Recursividade [Dúvida] [RESOLVIDO]

Enviado em 05/05/2015 - 19:28h

Olá, boa noite pessoal do VOL.
Estou com um problema para entender função recursiva.
Gostaria de saber se o codigo abaixo possui esse tipo de função:
#include <stdio.h>
#include<stdlib.h>

int total,pos,cont;
int valor1,valor2;

int calc(){
total = valor1+valor2;
valor1=valor2;
valor2=total;
cont--;
if(cont > 1 ){
calc();
}
}

int fib(){
total=0;
int v1=0,v2=1;
for(int i=1;i<20;i++){
total = v1+v2;
v1=v2;
v2=total;
}


}
int main(){
printf("Informe a posicao desejada: ");
scanf("%d",&pos);
cont=pos;
valor1=0,valor2=1;
fib();
printf("O numero com posicao 20 e: %d \n",total);
calc();
printf("O numero com posicao %d e: %d ",pos,total);

}
Produzi esse código, porém o rapaz que esta corrigindo, fala que esse codigo acima não possui uma função recursiva.
Entretanto a norma diz que uma afirma que:Recursão é o processo pelo qual uma função chama a si
mesma, repetidamente, um numero finito de vezes;
Nesse conceito a questão não estaria correta?
Caso não me desculpe, poderia me dar um exemplo melhor que eu pode-se entender.
Desde já agradeço a atenção

Responder tópico

2. Re: Recursividade [Dúvida]

Enviado em 05/05/2015 - 19:57h

Amigo, na verdade esse código não possui recursividade.

Posso fazer um exemplo:


#include <stdio.h>

void recursiveFunction(int num){
if (num < 20){
printf("%d\n", num);
recursiveFunction(num + 1);
}
}



int main(void){
printf("Digite um numero: ");
int x;
scanf("%d",&x);
recursiveFunction(x);
return 0;
}
Irá imprimir:


Digite um numero: 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Entretanto a norma diz que uma afirma que:Recursão é o processo pelo qual uma função chama a si
mesma, repetidamente, um numero finito de vezes;
Bom, é funções com retorno de valor, pois se você chama a função com o numero x e ela se chama passando como argumento x + 1 até que tenha um retorno, break ou algo parecido.Nessa exemplo, o utilizado foi o "if(num < 20)".

Se tiver mais alguma dúvida só me mandar um e-mail : thihup@gmail.com, pedir aqui no VOL ou me adicionar no skype: thihup

Espero ter ajudado

[]'s

T+

3. Re: Recursividade [Dúvida] [RESOLVIDO]

Enviado em 05/05/2015 - 20:10h

Não é à toa que uma das melhores explicações sobre recursividade eu vi no vidadeprogramador.com.br: para entender recursividade é preciso antes entender recursividade.
--
Luís Fernando Carvalho Cavalheiro
Public GPG signature: 0x246A590B
Só Slackware é GNU/Linux e Patrick Volkerding é o seu Profeta

4. Re: Recursividade [Dúvida] [RESOLVIDO]

Enviado em 05/05/2015 - 20:46h

Pessoal obrigado pelas explicações o código abaixo agora está corresponde agora a uma função recursiva ?

#include <stdio.h>
#include<stdlib.h>

int calc( int valor){

if(valor==0 ||valor==1){
return (valor);
}else{
return calc(valor-1) + calc(valor-2);
}
}
int fib(){
return calc(20-1) + calc(20-2);
}
int main(){
int pos;
printf("Informe a posicao desejada: ");
scanf("%d",&pos);
fib();
printf("O numero com posicao 20 e: %d \n",fib());
calc(pos);
printf("O numero com posicao %d e: %d ",pos,calc(pos));

}

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder