无聊写了个简单的递归
初学了解递归可以看看
- C/C++ code
void dfs(int a[5][5],int i,int j){ if(j<5 && i<5) { static bool b=1; if(b) dfs(a,i,j+1); cout<<a[i][4-j]<<" "; dfs(a,i+1,j); b=false; cout<<endl; }}void bfs(int a[5][5],int i,int j){ if(j<5 && i<5) { static bool b=1; if(b) bfs(a,i+1,j); cout<<a[4-i][j]<<" "; bfs(a,i,j+1); b=false; cout<<endl; }}int main(){ int a[5][5] ={0}; int s=0; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) a[i][j] =s++; } bfs(a,0,0); dfs(a,0,0); return 0;}[解决办法]
不错!
[解决办法]
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
[解决办法]
我顶,不错