Witam
Mam pewien problem z programem:
#include<iostream>
using namespace std;
int f1(int s);
int n=0;
int main()
{
int s;
cin >> s;
cout << f1(s) << '\n';system("pause");
}
int f1(int s)
{
//int zm;
if(s<=1)
{
return n;
//cout n << zm;
} else
{
if(s%2==0)
{
s-=1;
n++;
f1(s);
} else
{
s-=3;
n++;
f1(s);
}
}
}
Wynikiem programu dla wejścia 10 powinna być liczba 5. Tymczasem program wywala jakąs dziwną liczbę. W trakcie wykonywania funkcji f1 zmienna z zmienia się prawdiłowo (tzn. jest inkrementowana) dopiera gdy s <=1 to wywala dziwną liczbę. Tak samo jest gdy zamiast return n dam cout << n. Jednak gdy w funkcji dodam jakąs inną zmienną (np. zm) i wypisze zmienną n, a później zm (cout n << zm) to n ma prawidłową wartość a zm dziwną liczbę.
Co tu jest nie tak, bo siedze na tym już jakiś czas i nie mogę znaleźć błędu.
Pozdrawiam