Pular para o conteúdo

Recursividade

Responder tópico
  • Denunciar
  • Indicar

1. Recursividade

Enviado em 03/04/2016 - 11:23h

Olá pessoal!

Bom galera, é o seguinte, estou com dificuldade de entender essa função recursiva, mas precisamente o valor de Y = 32 que é o valor da impressão:

#include <iostream>

int x,y,w;

int G(int &a, int &b){
int z, ret;
z = a-1;
if ( b == 0 ){
ret = 3 * a;
}else{
ret = 4 * G(b,z);
}
a = 4 * b;
b = 2 * z;
return (ret);
}

main(){
x = 2; y = 4;
w = G(x,y);
std::cout << w <<" "<< x <<" "<< y ;
}

/*
Ida
A B b z
G( 2 4 ) -> A = 2 | B = 4 | Z = 1 | ret = 4 * (4 1)
G( 4 1 ) -> A = 4 | B = 1 | Z = 3 | ret = 4 * (1 3)
G( 1 3 ) -> A = 1 | B = 3 | Z = 0 | ret = 4 * (3 0)
G( 3 0 ) -> A = 3 | B = 0 | Z = 2 | ret = 3 * 3 = 9
Volta
A B
G( ) -> A = | B = | Z = | ret = 4 * 9 = 36
G( ) -> A = | B = | Z = | ret = 4 * 36 = 144
G( ) -> A = | B = | Z = | ret = 4 * 144 = 576

W = 576
X = 0
Y = 32
*/
O W eu entendi, mas eu não entendi porque o Y da o resultado de 32!

Se alguém puder me ajudar, ficarei grato!

Obrigado!

Responder tópico

2. Re: Recursividade

Enviado em 03/04/2016 - 20:29h

Ah já descobri aqui hehehe, foi só desenhar no caderno kkkkkkkkk

Estranho porque só depois do desenho que enxerguei algo tão simples assim, agora faz sentido diagramas kkkkkkkkk

Mas valeu, pode fechar os tópico!!

3. Re: Recursividade

Enviado em 03/04/2016 - 20:42h

Você é quem fecha.
Procure por um lugar escrito Resolvido e clique nele.
Grato.

----------------------------------------------------------------------------------------------------------------
# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder