递归函数的内存问题
在函数调用时,系统会为被调用函数如何分配内存?分多大的内存?
比如说下面的代码(递归遍历图某点的8个方向)
暴力型的:
#include<cstdio>#include<cstring>#include<cstdlib>#define M 751using namespace std;int T,W,H;char G[M][M];const int NEG=-1,POS=1;void dfs(int x,int y){ if(x<0||x>=H||y<0||y>=W||G[x][y]=='*')return; /*T++; G[x][y]='*';*/ dfs(x,POS+y);//right dfs(x,NEG+y);//left //upward dfs(NEG+x,y); dfs(NEG+x,NEG+y); dfs(NEG+x,POS+y); //downward dfs(POS+x,y); dfs(POS+x,NEG+y); dfs(POS+x,POS+y);}#include<cstdio>//当用暴力代替dfs中的for循环时为什么会爆掉?#include<cstring>#include<cstdlib>#define M 751using namespace std;int T;char G[M][M];int W, H, dx[8]={1,-1,0,0,1,-1,1,-1}, dy[8]={0,0,1,-1,1,1,-1,-1};void dfs(int x,int y){ if(x<0||x>=H||y<0||y>=W||G[x][y]=='*')return ; /*G[x][y]='*'; T++;*/ for(int i=0;i<8;i++) dfs(x+dx[i],y+dy[i]);}