C++ 不能递归return function(--a)

example_01.cpp:11:17: warning: unsequenced modification and access to 'a' [-Wunsequenced]
return a + fun(--a);
~ ^
1 warning generated.
➜ d25 vim example_01.cpp

1 #include
2 using namespace std;
3 int fun(int a);
4 int main() {
5 cout << fun(100);
6 return 0;
7 }
8 int fun(int a) {
9 if (a == 1)
10 return 1;
11 return a + fun(--a);
12 }
~

首先你这个不是不能递归,请您仔细看下提示信息,是“warning”,并不是一个错误。这里之所以会“warning”是和编译器的版本有关,不同的编译器
编译顺序不一样

#include
using namespace std;
int fun(int a);
int main() {
cout << fun(100);
return 0;
}
int fun(int a)
{
if (a == 1)
return 1;
return a + fun(--a);
}

4951
VS2010编译正常,递归有边界条件应该没问题,你是不是头文件没写全?

VS2015编译无错误,我看你用的是vim,是不是编译器没有配置好