Variáveis em programação recursiva
Queridos amigos,
Estou com um caso aqui em q tenho q usar programação recursiva:
[b:502c5424c7]procedure Proc;
var
x : integer;
y : byte;
begin
if x < y then Proc; [i:502c5424c7]//se x < y chama Proc[/i:502c5424c7]
end;[/b:502c5424c7]
Gostaria de saber se toda vez que a função chamar ela mesma, declarará uma nova variável ou a variável já declarada na outra chamada será usada.
Além disso... é possível saber o nível que eu estou na recursão?
Obrigado!!!
Estou com um caso aqui em q tenho q usar programação recursiva:
[b:502c5424c7]procedure Proc;
var
x : integer;
y : byte;
begin
if x < y then Proc; [i:502c5424c7]//se x < y chama Proc[/i:502c5424c7]
end;[/b:502c5424c7]
Gostaria de saber se toda vez que a função chamar ela mesma, declarará uma nova variável ou a variável já declarada na outra chamada será usada.
Além disso... é possível saber o nível que eu estou na recursão?
Obrigado!!!
Mathac_admin
Curtidas 0
Respostas
Delphiman
27/09/2003
Oi colega,
cada vez que a função for chamada ele era alocar novas variáveis, isso é meio perigoso para o programa que poderá entrar em loop, para isso não acontecer a cada chamada vc tem que modificar a variável visando que ela seja alterada, por exemplo:
function Fatorial(AintValor : integer) : integer;
begin
Result := AintValor;
if AintValor > 1 then
Result := Result * Fatorial((AintValor - 1));//chamada rec. altera valor do parametro antes de fazer uma nova chamada
end;
Quanto a saber em que nivel ela esta vc pode passar outro parametro ou colocar uma varável modular(não aconselho).
[]´s
cada vez que a função for chamada ele era alocar novas variáveis, isso é meio perigoso para o programa que poderá entrar em loop, para isso não acontecer a cada chamada vc tem que modificar a variável visando que ela seja alterada, por exemplo:
function Fatorial(AintValor : integer) : integer;
begin
Result := AintValor;
if AintValor > 1 then
Result := Result * Fatorial((AintValor - 1));//chamada rec. altera valor do parametro antes de fazer uma nova chamada
end;
Quanto a saber em que nivel ela esta vc pode passar outro parametro ou colocar uma varável modular(não aconselho).
[]´s
GOSTEI 0
Mathac_admin
27/09/2003
Querido amigo,
Agradeço pela resposta. Vc me ajudou muito.
Agradeço pela resposta. Vc me ajudou muito.
GOSTEI 0