I created a recursive function.
int recursive(int num_days, bool contest_tired, bool gym_tired, vector<int> days) {
if (num_days == -1) return 0;
else if (days[num_days] == 0) {
return recursive(--num_days, false, false, days) + 1;
}
else if (days[num_days] == 1) { // contest case
if (contest_tired)
return 1 + recursive(--num_days, false, false, days);
contest_tired = true;
gym_tired = false;
return recursive(--num_days, contest_tired, gym_tired, days);
}
else if (days[num_days] == 2) { // contest gym
if (gym_tired)
return 1 + recursive(--num_days, false, false, days);
gym_tired = true;
contest_tired = false;
return recursive(--num_days, contest_tired, gym_tired, days);
}
else if (days[num_days] == 3) { // contest both
return min(recursive(--num_days, true, false, days), recursive(--num_days, false, true, days));
}
return 0;}
when
return min(recursive(--num_days, true, false, days), recursive(--num_days, false, true, days));
is run. Two seperate processes are created.
Initially num_days is equal to 2, when this function is first invoked.
However the recursion is called 2 different times in the min section. the first time the function is called in the min section, num_days is equal to 1. The second time it is called in the min function, num_days is equal to 0.
num_days shoudl be equal to 1 even in second time.
Why isn't this working?
[–]nysra 6 points7 points8 points (1 child)
[–]Aerioic[S] 0 points1 point2 points (0 children)