对于递归有没有什么好的理解方法? - 知乎https://www.zhihu.com/question/31412436
补充理解:
举例,对于一个 1+2+3+...+100 的程序,如果用循环写的话,程序如下:
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum = sum + i;
}
cout << "Sum is: " << sum;
用递归的写法则是如下:
int sum(int n)
{
if (n == 1) {
return 1; // 这个就是递归的出口,化简为非递归状况处理
} else {
return sum(n - 1) + n; // 子问题须与原始问题
}
}
过程如下图所示: