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,是不是编译器没有配置好