Aprēķiniet eksponenciālo ar rekursiju

Aprēķiniet eksponenciālo ar rekursiju

Izdevums

Lūdzu, vēlos uzzināt kļūdu, kas pastāv šajā algoritmā. Informācijai: šis algoritms ir aprēķināt eksponenciālo metodi ar rekursiju.

 #include #include #include int factoriel (int n, int i, int fakts) {if (i = n + 1) {fakts = 1; atgriešanās fakts; } else {fact = fakts * i; i ++; faktoriel (n, i, fakts); }} peldošs dziļums (int n, int i, pludiņš x, peldošs p) {ja (i = n + 1) {p = 1; atgriezties p; } cits {p = p * x; i ++; sprauga (n, i, x, p); }} int main () {const float EPS = 0, 0001; int i, n, fakts; peldēt x, p, s, T; printf ("Donner x:"); scanf ("% f", & x); n = 0; T = 1; s = 0; fakts = 1; p = 1; kamēr (grīdas (T)> EPS) {T = tukšums (n, 1, x, p) / faktors (n, 1, fakts); s = s + T; n = n + 1; } printf ("Exp (% f) =% f", x, s); } 

Risinājums

Vairākas kļūdas.

Es paužu pār absurdu izmantot rekursiju, lai aprēķinātu faktora un spēka aprēķinu, es domāju, ka jūs pieprasījāt.

Pirmkārt, sīks sintakse ultra-classic: tests ir ==, nevis =. Savās divās funkcijās jābūt, ja (i == n +1)

Vēl ļaunāk, citā pārbaudiet abas funkcijas, nav atgriešanās. Tātad jūsu funkcija nedod neko, tas var aizņemt nejaušu vērtību. Es domāju, ka ideja bija iegūt pirmo atgriešanās faktoru (n, i, faktu);

Bet pat ar šo korekcijas koeficientu un Tava jauda nedarbosies. Jūs veicat smalkus aprēķinus, pēc tam atgriežaties stadijā n +1, jūs varat piespiest rezultātu 1!

Visbeidzot, tavā rokā jūs esat atjaunojis p un faktiski katru cilpu.

Manuprāt, labāk ir rakstīt faktora funkciju un spēku darbam, samazinot vērtības (no n līdz 1), nevis palielinot no 1 līdz n +1. Funkcijai nepieciešams tikai viens parametrs, tas ir daudz vienkāršāks (ne i, fakts vai p)

Piezīme

Atrisiniet ar le père

Iepriekšējais Raksts Nākamais Raksts

Top Padomi