[C] valori stampati a video

giovanta-votailprof
Dato il codice indicato qui sotto, riportare i valori che il programma produce sullo schermo.

#include<stdio.h>
int fn1 (int);
int fn2 (int);

int fn1 (int x){
   if (x<2)
    return 1;
   else
     {printf ("%d",x);
       return (x + fn2 (x-2) );
      }
}

int fn2 (int a){
   if (a < 2)
     return 1;
   else 
     return (a+ fn1 (a-1) );
}

void main(){
    int r=6;
    r=fn2(r);
    printf("%d"\n",r);
}


Dato che l'argomento passato ad f2 è 6, gli if di f1 ed f2 non vengono mai eseguiti.
Viene eseguita la printf dell'if di f1, che stampa a video 6. Ma poi cosa succede?

Grazie

Risposte
Omega1
Ciao!

In realtà le funzioni f2 e f2 si richiamano vicendevolmente, fino a quando una delle due riceve come ingresso un numero minore di 2.

Il risultato finale è la somma della serie 1 2 3 5 6 8 9 ... ( fino a r).

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.