Я предполагаю, что ваш фактический код:
#include<bits/stdc++.h>
using namespace std;
int fun (int a)
{
if (a>=0)
return a+fun(a-2);
return a; // may be missing.
}
int main()
{
int x=12;
printf("%d",fun(x));
return 0;
}
Причиной, по которой этот код возвращает 40, является значение аргумента a
, в последний раз называемое fun
, равно -2
. Потому что if (a>=0)
верно, когда a==0
. Таким образом, ваша программа рассчитывает 12+10+8+6+4+2+0+ -2
(равно 40).