Carino come esercizio. Comunque, io capovolgerei tutto: così è molto più efficiente, è un'unica funzione e rimuove completamente l'iterazione, sostituita con la sola ricorsione:
codice:
#include <stdio.h>
void fibo3(int tofind, int prev=1, int cur=1) {
if(tofind==0) return;
int next = cur + prev;
if(next%3==0) {
printf("%d\n", next);
tofind--;
}
fibo3(tofind, cur, next);
}
int main() {
int tofind = 0;
scanf("%d", &tofind);
fibo3(tofind);
return 0;
}
Noterai che di fatto è la versione ricorsiva di:
codice:
void fibo3(int tofind) {
int prev = 1, cur = 1;
while(tofind!=0) {
int next = cur + prev;
if(next%3==0) {
printf("%d\n", next);
tofind--;
}
prev = cur;
cur = next;
}
}