Dwa ciągi rekurencyjne

0

Dwa ciągi rekurencyjne limit czasu 1s; limit pamięci 32 MB

Dane są dwa ciągi zadany w sposób rekurencyjny: an = 1 dla n 6 0 bn = 1 dla n 6 0 an = 2an−1 + an−2 −3bn−1 dla n > 0 bn = bn−1 −bn−2 −2an−1 dla n > 0. Należy znaleźć wyrazy an oraz bn tego ciągu, dla zadanego indeksu n.

Wejście: Pierwsza linijka wejścia zawiera jedną liczbę naturalną n (−20 6 n 6 20). Wyjście:

Wyjście powinno zawierać dwie liczby całkowite: n-te wyraz ciągów, czyli an i bn oddzielone pojedyncza spacją.

Uwaga: Zadanie wykonaj rekurencyjnie (bez użycia tablic).

Przykład 1.
Wejście -3
Wyjście 1 1
Przykład 2.
Wejście 3
Wyjście 23 -15

Mam już cos takiego:

#include <iostream>

using namespace std;

int a(int n);
int b(int n);

int main()
{
int n;
cin>>n;

int a(int n);
{
    if(n<1)
        return 1;

    if(n>0)
        return 2*a(n-1)+a(n-2)-3*b(n-1);
}

int b(int n);
{
    if(n<1)
        return 1;

    if(n>0)
        return b(n-1)-b(n-2)-2*a(n-1);
}
return 0;

}

Problem mam z tym ze ciągi są zdefiniowane sobą nawzajem i wyskakują powiadomienia że b(int n) i a(int n) są niezdefiniowane.

0

Problem w tym, że definiujesz je w środku funkcji main().
Sama definicja też dziwnie wygląda:

int a(int n);  //po co tu średnik?
{
0

ok dzięki już poprawiłem i wszystko działa a z tymi średnikami to mam jeszcze problem że źle je stawiam, bo programuje dopiero od 1 miesiąca i to tylko na potrzeby przedmiotu na studiach dlatego zdarzają mi się takie błędy
jeszcze raz dzięki za wskazówki

1 użytkowników online, w tym zalogowanych: 0, gości: 1