-
Se a alocação da variável é estática, quando for chamado a função de forma recursiva, não será possível alocar uma nova variável local. Será usada a variável da chamada anterior pois ela foi definida estaticamente (seu valor persiste entre chamadas recursivas). Neste caso, a recursividade não funciona.
-
Complementando o comentário do Leoh...
Uma variável quando declarada estática, ela terá sua área de memória compartilhado, portanto só existirá uma unica área de memória.
Ao entrar na recursividade estará fazendo alteração na mesma área de memória compartilhada, logo não irá funcionar.
-
Nem com a explicação dos colegas consegui entender. Quer dizer que essa recursão não é possível?
Retirada de: http://www.ime.usp.br/~pf/algoritmos/aulas/recu.html
-
Geraldo, nesse código não há variável estática, geralmente as variáveis estáticas são declaradas com o nome "static" antes do nome e tipo devariável. por ex; "static int x;"
-
Prezados,
Vamos analisar a questão em partes. Primeiro, o comando da questão está correto ao afirmar que o escopo e duração de variáveis locais são limitadas a função ou procedimento onde elas são declaradas. Se uma variável é criada dentro de um método, via de regra ela só é acessível dentro desse método. A segunda parte do comando da questão afirma que a recursividade não é possível com variáveis estáticas, e essa parte também é correta. A recursividade significa um método chamar ele mesmo, até resolver a situação proposta, normalmente fazendo isso com alguns cálculos que são atribuidos a variáveis locais, se a variável definida for estática, cada nova chamada do método será manipulado o mesmo valor da variável ( visto que ela seria estática ) , e isso atrapalharia a recursividade.
Portanto a questão está correta.
-
Prezados,
Vamos analisar a questão em partes. Primeiro, o comando da questão está correto ao afirmar que o escopo e duração de variáveis locais são limitadas a função ou procedimento onde elas são declaradas. Se uma variável é criada dentro de um método, via de regra ela só é acessível dentro desse método. A segunda parte do comando da questão afirma que a recursividade não é possível com variáveis estáticas, e essa parte também é correta. A recursividade significa um método chamar ele mesmo, até resolver a situação proposta, normalmente fazendo isso com alguns cálculos que são atribuidos a variáveis locais, se a variável definida for estática, cada nova chamada do método será manipulado o mesmo valor da variável ( visto que ela seria estática ) , e isso atrapalharia a recursividade.
-
e se for fazer um backtracking controlado por contador global? o que tem a ver variável estática com recursividade?
atrapalhar a recursividade != impossibilitar
como faz falta um bom recurso, agora a gente fica na dúvida e com a pulga atrás da orelha tipo "será que a cespe está certa" e tentando achar pelo em ovo em uma afirmação totalmente desnecessária em um mundo de boas possíveis questões :X
EDIT: a afirmação está expressamente dita no livro do SEBESTA. Porém, ainda assim, totalmente contraintuitivo pra quem não leu o livro :X