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:
Se alguém puder me ajudar, ficarei grato!
Obrigado!
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:
O W eu entendi, mas eu não entendi porque o Y da o resultado de 32!
#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
*/
Se alguém puder me ajudar, ficarei grato!
Obrigado!