main recursiva. main pode ser chamada recursivamente? Escreva um programa que contenha uma função main. Inclua a variável local static count inicializada como 1. Pós-incremente e imprima o valor de count cada vez que main for chamada. Execute seu programa. O que acontece?

Passo 1

Fala Galera!! Mais um exercício topzera, bora resolver essa parada.

O exercício pede para criar um programa que tenha uma função main, criar uma variável static count inicializada em 1, incrementar o valor da variável e imprimir cada vez que a função for chamada. Vamos escrever isso então. Vai ficar da seguinte maneira:

#include

int main(){

static int count = 1; /* contagem de variáveis locais estáticas */

printf( "%d\n", count );

count++;

main(); /* chamada recursivamente int main() */

return 0;

} /* fim do main */

Passo 2

Tranquilo né? Agora vamos usar nosso compilador para rodar esse programa e ver o que acontece.

Ao rodar o programa ele irá começar imprimir os valores de 1 até infinito. Mas porque isso acontece?

Bom, nós estamos aplicando recursividade no próprio main() do programa, e dentro do main() estamos incremento a variável e imprimindo esse valor, sem nenhuma condição de parada. Portanto o programa vai fica rodando até o computador não aguentar mais. Sendo assim, entramos em um problemas de lógica, visto que o programa irá rodar ao compilar, mas ele entra em um loop infinito até que o computador travar.

E assim finalizamos mais um exercício Galera!! Até o próximo!!!!

Resposta

Ei, a resposta está no passo a passo :)