Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Plástico Bolha

lógica de programação

Recommended Posts

Oi estava vendo um exemplo e me surgiu a seguinte dúvida, Porque caso eu digite o número 5, a variável "resultado" terá o valor 5 ? Pois o "for" não tem nada que o condicione a parar, qual é o critério que ele usa para parar ? Obrigado pela paciência

 

#include <iostream> 
using namespace std;
long forFibo(long posicao); 
int main() 
{ 
long resposta pos; 
cout << "\nDigite a posicao na serie: "; 
cin >> pos; 
resposta= forFibo(pos); 
cout << "\nPosicao = " 
 << pos 
 << ", Num. Fibonacci = " << resposta<< "\n"; 
  system("PAUSE");
return 0; 
}
long forFibo(long posicao) 
{ 
long menosDois, 
 menosUm = 1, 
 resposta = 2; 
if(posicao < 3) 
 return 1; 
for(posicao -= 3; posicao; posicao--) 
{ 
 menosDois = menosUm; 
 menosUm = resposta; 
 resposta = menosUm + menosDois; 
}
return resposta; 
}

 

OBS: Digamos que eu digite o número 5 ...

 

...
if(posicao < 3)
return 1;
for(posicao -= 3; posicao; posicao--) // 5-4 aqui ... = 1 posição decairá para 1
{
menosDois = menosUm; // Menosdois = 1
menosUm = resposta; // menosum = 2
resposta = menosUm + menosDois; // resposta = 3
}

 

MenosDois = 1

MenosUm = 2

resposta = 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você coloca a variável em um laço condicional como condição, você está dizendo "ei, enquanto eu tiver valor verdadeiro, continue o loop!".

 

Já estudou a relação de verdadeiro/falso em C? Pois é, o valor 0 é representado como falso, e valores diferentes de zero (normalmente positivos) são representados como positivos.

 

 

Com o valor posição sendo maior que zero, o loop continuará, pois seu valor será considerado como positivo. Agora, se ele colocasse no laço '!posicao', o loop continuaria enquanto posicao fosse igual a zero.

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, ja conhecia a regra do 1 e 0 ^_^. O que eu não sabia é que se eu não coloca-se nenhum valor na posicao para ser batido, essa regra se aplicaria automaticamente. Pelo menos uma dúvida ja foi tirada ^^. So falta a outra. Obrigado ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.