递归和分治思想
如果可以使用迭代,尽量别使用递归。由编译原理可以知道,每次自调用的时候,计算机都需要保存在调用,浪费时间空间。当然,迭代是当我们知道循环次数的时候。而当我们不知道循环次数,比如说对于文件夹和文件进行遍历,不知道深度的情况下,我们就需要递归来实现。
显然,递归是先解决小的问题,这种思想是分治思想。根据具体需求,来决定是否使用递归。
递归要注意:
结构是选择结构,而迭代是循环结构
必须有基线条件和递归条件,防止出现死循环
如果知道循环次数的话,尽量使用递归
对于某些编程式函数,有对于尾递归的迭代优化
递归逻辑更容易理解
一些实例
逆序输出字符串
#include<iostream>using namespace std;void print(){ char a; cin>>a; if(a!='#') print(); // 不是停止符,先自调用 if(a!='#') cout<<a; //在回来的时候,打印自己的字符