По моему мнению, функция должна возвращать 2 в качестве ответа, потому что каждый раз, когда функция вызывается рекурсивно, статической переменной 'r' снова присваивается ноль.Примечание: переданный аргумент в функции равен 5.
int fun(int n){
static int r=0;
if(n<=0)return 0;
else if(n>3){
r=n;
return fun(n-2)+2;
}
else return fun(n-1)+r;
}
Функция фактически возвращает 17, когда ей передается 5.