再帰関数で、連結したぷよの数、ぷよの削除を行っています。
現在、浮いているぷよを落下させることはできましたが、
消そうとした時に画面が落ち、エラーメッセージが出ます。
再帰ではなく末端再帰もしくは、ループ文にした方が良いでしょうか?
またもし末端再帰、ループ文の方が良いというとき
そのコツもしくは手順を教えてください。
発生している問題・エラーメッセージ
Segmentation fault: 11
再帰関数のソースコード
コード void Count(int x, int y, int *n){ // ぷよの数を判定するための再帰関数 int c = puyomath[x][y]; // 自分の色 puyomath[x][y]=0; (*n)++; if(x+1<FIELD_W && puyomath[x+1][y]==c) { Count(x+1, y, n); } if(y+1<FIELD_H && puyomath[x][y+1]==c) { Count(x, y+1, n); } if(x-1>=0 && puyomath[x-1][y]==c) { Count(x-1, y, n); } if(y-1>=0 && puyomath[x][y-1]==c) { Count(x, y-1, n); } puyomath[x][y]=c; } void Vanish(int x,int y){ // ぷよを消すための再帰関数 int c = puyomath[x][y]; // 自分の色 puyomath[x][y]=0; HgLClear(field_layer[x][y]); if(x+1<FIELD_W && puyomath[x+1][y]==c) { Vanish(x+1, y); } if(y+1<FIELD_H && puyomath[x][y+1]==c) { Vanish(x, y+1); } if(x-1>=0 && puyomath[x-1][y]==c) { Vanish(x-1, y); } if(y-1>=0 && puyomath[x][y-1]==c) { Vanish(x, y-1); } }
C言語
補足情報 Xcode、Handy Graphicを使用しています
回答1件
あなたの回答
tips
プレビュー