c++ F.Rekurencyjna

0

witam, mam do napisania taką funkcję

Napisz program, który wylicz m-ty element ciągu określonego wzorem rekurencyjnym:
B(m) = B(m-2) + B(m-3) - m dla m >=3
B(0)=1, B(1)=B(2)=2

no nie potrafię, kombinowałem z tą rekurencja, coś mi nie chce wyjść, może tak będzie dobrze ?
int reku(int m) {
if(m == 0) return 1;
if(m == 1) return 2;
if(m == 2) return 2;
return reku((m-2)+(m-3)-m);
}

0

W miarę.Powinno być na końcu:

....
return reku(m-2)+reku(m-3)-m;

No i masz zbędne powtórzenie ifa zwracającego 2,weź połącz sprawdzanie wejścia == 1 lub 2 w jednym warunku

0

Dzięki @MasterBLB, działa mi :)
Nie chciał bym zakładać, nowego tematu, z drobnym problemem więc umieszczę tu. Mianowicie, zadanie jest takie:
Wejście:

Na wejściu program wczytuje łańcuch liter o długości nie większej niż 10 znaków. Następnie wczytuje liczbę n (0<n<10) oznaczającą liczbę napisów do przetestowania. W kolejnych n liniach znajdują się owe napisy. Długość napisu nie przekracza 100 znaków. Należy zliczyć liczbę wystąpień każdej litery z wejścia w każdym podanym napisie.

Wyjście:

Program wypisuje dla każdego napisu liczbę wystąpień każdej litery w osobnych liniach w formacie: "litera:liczba_wystapien".

Przykład:
Wejście:
as
2
ala ma kota
marysia ma rysia

Wyjście:
a: 4
s: 0
a: 4
s: 2

Wiem, że problem w moim programie leży zapewne w funkcji .length() która zliczając znaki bierze rownież spacje pod uwagę co skutkuje błędem w pętli while i problemem z programem. Zamieszczę to co mam i może ktoś będzie umiał mi pomóc.

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int iw(string napis, char litera)
{
int liczba=0;
     for(int i=0; i<napis.length(); ++i)
     {
             if(napis[i]==litera) ++liczba;
     }
     return liczba;
}

int main()
{
    string zdanie;
    string litery;
    int lt=1;
    int tab[10][10];
    do{getline(cin,litery);}
    while(litery.length()>10);//problem
    do{cin>>lt;}
    while(lt>10&&lt<0);//Problem
    cin.get();
    for(int j=0; j<lt; ++j)
    {
                do{getline(cin,zdanie);}
                while(zdanie.length()>100);//Problem
            for(int i=0; i<litery.length(); ++i)
            {
             tab[j][i]=iw(zdanie,litery[i]);    
            } 
    }
    for(int p=0; p<lt; p++)
    {
             for(int k=0,i=0; k<litery.length(),i<litery.length(); ++k,++i)
             {
                     cout<<litery[k]<<":"<<tab[p][i]<<endl;
                     if(k>(litery.length()-1))k=0; 
             } 
    }  
    return 0;
}

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