Main ricorsivo

di il
5 risposte

Main ricorsivo

Allora, stavolta mi si chiede di scrivere un programma dove richiamare ricorsivamente il main,
includere la variabile static count a 1, ed ogni volta che main è invocato, applicare l'operatore di postincremento e visualizzare il valore di count...dunque...

#include <stdio.h>

main()
{

 int static count;

count = 1;

printf("%d", count++);

main();

return 0;
}

dunque, dovrebbe essere corretto, perchè mancando il caso di base, ovviamente tende ad infinito...

5 Risposte

  • Re: Main ricorsivo

    jackalxp5b ha scritto:


    int static count;
    Il static non va prima del tipo?

    jackalxp5b ha scritto:


    printf("%d", count++);
    Non puoi cambiare il valore di count all'interno della funzione printf()

    jackalxp5b ha scritto:


    main();
    Non so se è errore, ma è meglio scrivere return main();

    quindi:
    #include <stdio.h>
    
    int main() {
    
    static int count = 1; // se definisci la variabile dopo visualizzerà sempre 1
    
    printf("%d\n", count); // Ho messo il ritorno a capo per fare meno confusione con i numeri
    
    count++;
    
    return main();
    }
    
  • Re: Main ricorsivo

    In realtà ho visto che funziona anche come hai messo tu. Va bene anche int static (ma consiglio di mettere static int) e va bene anche l'incremento all'interno del printf().

    Non ti dovrebbe dare errore.
  • Re: Main ricorsivo

    Si il mio è piu concentrato...difatti va benone..se metto il caso base a 10, main, conterà da 1 a 10...ok.
  • Re: Main ricorsivo

    Così quindi vorresti fare? (Mi sono accorto però che c'erano rimasti due errori)
    #include <stdio.h>
    
    main()
    {
    
    int static count = 1; /* Questo era l'errore: avevi assegnato 1 a count in seguito, assegnandolo a ogni ripetizione */
    
    printf("%d\n", count++);
    
    if (count <= 10) return main(); /* Altro errore: senza il return eseguirà 10 volte il getchar(), poichè facendo main(); richiami la funzione main() senza terminare la prima. */
    
    getchar();
    
    return 0;
    }
    
    
  • Re: Main ricorsivo

    Si si...il return main è corretto, poichè altrimenti chiama ripetutamente il getchar...quindi ok...poi per il caso di base, effettivamente l'esercizio non lo richiede, richiede solo di chiamare ricorsivamente il main, impostando una variabile di tipo static count ad 1, e stare a vedere cosa succede....ho inserito io un caso di base, per verificarne l'effettiva funzionalità...ma non era richiesto...credo che lo scopo principale dell'esercizio è quello di dimostrare, che è sufficiente anche solo richiamare il main...per ottenere un ciclo, come ad esempio il while, o la sua forma abbreviata, for...quindi se inserisco un una singola selezione come l'if...dovrei poter contare fino a 10, anche solo richiamando ricorsivamente il main...tutto li...
Devi accedere o registrarti per scrivere nel forum
5 risposte