[C++] Obliczanie znaczeń potęgowych
Ostatnio zmodyfikowano 2015-11-02 18:35
malyryc Temat założony przez niniejszego użytkownika |
[C++] Obliczanie znaczeń potęgowych » 2015-10-30 17:57:20 Witam, mam problem z napisaniem programu obliczającego znaczenie potęgowe. wzór e^x = 1+x+x^2/2!+ ... + x^n/n! e = 2.7182818, x = 7. Chciałbym, aby program wykonywał obliczenia rekurencyjnie. Przedstawiam mój kod, który nie działa poprawnie: #include <iostream> #include <cstdio> #include <math.h> #include <stdio.h> #define E 2.7182818
using namespace std; int x = 7; float p = 1 + x; float e = pow( E, x ); int i = 1;
int silnia( int n ) { if( n == 0 ) return 1; else return n * silnia( n - 1 ); }
float pot( int i, float wynik ) { if( e > wynik ) { return wynik + pot1( i++, wynik ) + pow( x, i ) / silnia( i ); } }
int main() { printf( "wzorek %.2f\n\n", pot( i, p ) ); printf( "normalnie %.2f\n\n", e ); }
Z góry dziękuję za pomoc |
|
Monika90 |
» 2015-10-30 18:52:31 pot1 - nie ma takiej funkcji, zakładam że to miało być pot. Warunek e > wynik jest zawsze prawdziwy i rekurencja jest nieskończona (zmienna wynik ma za każdym wywołaniem funkcji tę samą wartość). Modyfikujesz zmienną i (i++) i jednocześnie odczytujesz jej wartość - to jest bez sensu i zachowanie takiego kodu jest niezdefiniowane. No i na końcu funkcji pot brakuje return, ale teraz to nie ma znaczenia, bo rekurencja jest nieskończona.
#define E 2.7182818 Kto Cię tego nauczył?
|
|
malyryc Temat założony przez niniejszego użytkownika |
» 2015-10-31 18:16:43 Jest w takim razie ktoś w stanie poprawić mój kod na poprawny? |
|
DejaVu |
» 2015-11-02 18:35:20 Dostałeś informacje gdzie masz błędy i co należy poprawić. |
|
« 1 » |