Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Obliczanie znaczeń potęgowych

Ostatnio zmodyfikowano 2015-11-02 18:35
Autor Wiadomość
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:
C/C++
#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 )
    {
        //wynik = pot1(i++, wynik) + pow(x, i) / silnia(i);
        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
P-139394
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ł?
P-139395
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?
P-139449
DejaVu
» 2015-11-02 18:35:20
Dostałeś informacje gdzie masz błędy i co należy poprawić.
P-139530
« 1 »
  Strona 1 z 1