Recursividade [Dúvida] [RESOLVIDO]

1. Recursividade [Dúvida] [RESOLVIDO]

Wilson Nilo
WNA

(usa Ubuntu)

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



  


2. Re: Recursividade [Dúvida]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

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]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

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]

Wilson Nilo
WNA

(usa Ubuntu)

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));

}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts