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

Rekurencja dwumianu Newtona - program przestał działać

Ostatnio zmodyfikowano 2013-12-31 18:27
Autor Wiadomość
The_Game
Temat założony przez niniejszego użytkownika
Rekurencja dwumianu Newtona - program przestał działać
» 2013-12-31 15:24:52
Witam!
Mam problem z rekurencją dwumianu Newtona. Program się po prostu wysypuje, nie wiem z jakiej przyczyny. Bardzo proszę o poradę co jest nie tak. Pozdrawiam!

C/C++
#include <iostream>
#include <cmath>
using namespace std;

unsigned long long int sil( unsigned long long int n )
{
    if( n < 2 ) return 1;
    else return n * sil( n - 1 );
   
}

unsigned long long int npok( unsigned long long int n, unsigned long long int k )
{
    if( n == 0 && n == k ) return 1;
    else return npok( n - 1, k ) + npok( n - 1, k - 1 );
   
}

int main()
{
    int n, k;
    cin >> n >> k;
    cout << npok( n, k );
    return 0;
}
P-100759
DejaVu
» 2013-12-31 15:37:15
C/C++
unsigned long long int npok( unsigned long long int n, unsigned long long int k )
{
    if( n == 0 && n == k ) return 1;
    else return npok( n - 1, k ) + npok( n - 1, k - 1 );
   
}

Przeanalizuj czy dla podawanego n, k jesteś w stanie na kartce wykonać skończoną liczbę kroków do uzyskania wyniku.
P-100762
The_Game
Temat założony przez niniejszego użytkownika
» 2013-12-31 18:16:36
Okej, wszystko się dobrze skończyło. Z początku myślałem, że musi być pętla w głównej części programu ale miałem po prostu złe warunki w funkcji :D. Poniżej zamieszczam gotowy kod, może się komuś przyda :)
Pozdrawiam i dziękuję :)

C/C++
#include <iostream>
using namespace std;

unsigned int npok( unsigned int n, unsigned int k )
{
    if( k == 0 || k == n ) return 1;
   
    if( n > 0 && k > 0 && n > k ) return npok( n - 1, k ) + npok( n - 1, k - 1 );
   
}

int main()
{
    int n, k;
    cout << "/** OBLICZANIE DWUMIANU NEWTONA **/\n"
    << "Podaj n: ";
    cin >> n;
    cout << "Podaj k: ";
    cin >> k;
    cout << "Wynik: " << npok( n, k );
    return 0;
}
P-100778
pekfos
» 2013-12-31 18:27:12
Program ma niezdefiniowane zachowanie dla n < k, na przykład. Brakuje return na końcu npok().
P-100779
« 1 »
  Strona 1 z 1