bonjour à tous,
Je révises mes examens en ce moment et je bloque sur un exo :
Je ne sais pas ce qu'il calcule précisément,Code:public static int ibo (int n){ if (n<=0)return 1; if (n==1)return 3; if (n==2)return 4; return ibo(n-3)+ibo(n-2); }
Je dois convertir ce code en forme récursive terminale puis en faire une version itérative sans pile. Or, la seule forme terminale que j'arrive à approcher de près ou de loin est celle-ci :
Ce qui me pose problème c'est l'appel récursif (iboterm (n-2,k)), je ne vois pas comment transformer la formule en quelque chose sous la forme (n,acc1, ...,)Code:public static int iboterm (int n) { return iboterm (int n, 0); } public static int iboterm (int n, int k){ if (n<0) return k; if (n==0) return iboterm(n-3,k+1); if (n==1) return iboterm (n-3,k+3); if (n==2) return iboterm (n-3,k+4); return iboterm (n-3,iboterm(n-2,k)); }
Si quelqu'un peut me donner un coup de main ce ne serait pas de refus,
Cordialement,
-----