Recursividade

1. Recursividade

Marcelo Alves
foyd

(usa Outra)

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!


  


2. Re: Recursividade

Marcelo Alves
foyd

(usa Outra)

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

Perfil removido
removido

(usa Nenhuma)

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







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts