Izračunajte eksponentno z rekurzijo

Izračunajte eksponentno z rekurzijo

Težava

Prosim, želim vedeti napake, ki obstajajo v tem algoritmu. Za informacijo: ta algoritem izračuna eksponentno metodo z rekurzijo.

 #include #include #include int factoriel (int n, int i, int fact) {if (i = n + 1) {fact = 1; dejstvo vračanja; } else {dejstvo = dejstvo * i; i ++; factoriel (n, i, dejstvo); }} plavajoča množica (int n, int i, float x, float p) {if (i = n + 1) {p = 1; return p; } drugo {p = p * x; i ++; puissance (n, i, x, p); }} int main () {const float EPS = 0.0001; int i, n, dejstvo; float x, p, s, T; printf ("Donner x:"); scanf ("% f", & x); n = 0; T = 1; s = 0; dejstvo = 1; p = 1; (T (t)> EPS) {T = vrednost (n, 1, x, p) / faktor (n, 1, dejstvo); s = s + T; n = n + 1; } printf ("Exp (% f) =% f", x, s); } 

Rešitev

Več napak.

Prečkam nesmiselnost uporabe rekurzije za izračun faktorije in moči, mislim, da ste zahtevali.

Prvič, podrobna sintaksa ultra-classic: test je ==, ne =. V vaših dveh funkcijah mora biti, če (i == n +1)

Še huje, v drugem testu obeh funkcij, ni vrnitve. Torej vaša funkcija ne vrne ničesar, lahko ima naključno vrednost. Mislim, da je bila zamisel, da imamo prvi faktor povratka (n, i, dejstvo);

Toda tudi s tem korekcijskim faktorjem in Tvoja moč ne bo delovala. Naredite fine izračune, nato pa se vrnete na stopnjo n +1, lahko rezultat prisilite na 1!

Končno, v vaši roki, ste ponovno inicializirali p in dejstvo na vsaki zanki.

Po mojem mnenju je bolje, da napišemo funkcijo faktorja in moč za delo z zmanjšanjem vrednosti (od n do 1) in ne z naraščanjem od 1 do n +1. Funkcija zahteva le en parameter, je veliko enostavnejša (ne i, Fact ali p)

Opomba

Rešite ga le père

Prejšnji Članek Naslednji Članek

Top Nasveti