Beregn eksponentiell ved rekursjon

Beregn eksponentiell ved rekursjon

Utgave

Vennligst, jeg vil gjerne vite feilen / feilene som finnes i denne algoritmen. For informasjon: Denne algoritmen er å beregne eksponentiell metode ved rekursjon.

 #include #include #include int factoriel (int n, int jeg, int faktum) {hvis (i = n + 1) {faktum = 1; tilbake faktum; } annet {faktum = faktum * i; i ++; factoriel (n, i, faktisk); }} float puissance (int n, int i, float x, float p) {hvis (i = n + 1) {p = 1; return p; } ellers {p = p * x; i ++; puissance (n, i, x, p); }} int main () {const float EPS = 0.0001; int jeg, n, faktum; float x, p, s, T; printf ("Donner x:"); scanf ("% f", & x); n = 0; T = 1; s = 0; Faktisk = 1; p = 1; mens (gulv (T)> EPS) {T = puissance (n, 1, x, p) / faktoriel (n, 1, faktum); s = s + t; n = n + 1; } printf ("Exp (% f) =% f \ n", x, s); } 

Løsning

Flere feil.

Jeg overgår absurditeten ved å bruke rekursjon for å beregne den faktorielle og kraften, jeg antar at du ba om.

Først detaljert syntaks ultra-klassisk: testen er ==, ikke =. I dine to funksjoner bør være hvis (i == n +1)

Verre, i ellers teste begge funksjonene, er det ingen retur. Så din funksjon returnerer ingenting, det kan ta en tilfeldig verdi. Jeg antar at ideen var å få den første tilbakefaktoren (n, jeg, faktum);

Men selv med denne korreksjonsfaktoren og din kraft vil ikke fungere. Du gjør fine beregninger, og returneres til scenen n +1, du kan tvinge resultatet til 1!

Til slutt, i din hånd, har du på nytt reinitialisert p og fakta på hver løkke.

Etter min mening er det bedre å skrive den faktoriale funksjonen og kraften til arbeid ved å redusere verdier (fra n til 1) i stedet for å øke fra 1 til n +1. Funksjon krever bare en parameter, det er mye enklere (nei jeg, Faktum eller p)

Merk

Løs av le père

Forrige Artikkel Neste Artikkel

Beste Tips