ベースケースがない場合、再帰実行後のステートメントはいつ実行されますか?すべての再帰は再帰関数に戻す制御を送信する場合再帰関数のベースcaseとステートメントを持たない再帰
void fun(int x,int y){
statement 1;
statement 2;
fun(x',y');
statement 3;
statement 4;
}
は、ここでのステートメント1と2は、基地cases.Whenは文3と4が実行されますされていませんか?
私の質問はこのコードを参照していますhttps://ideone.com/lEKxW5。私が与えたリンクでは、24行目以降のステートメント、または再帰実行後のステートメントはいつですか?
LOOK AT THE LINK OF THE CODE BEFORE ANSWERING .
void dfsBipartiteColor(int x, int y, int c)
{
// If we got to paint the cell:
if ((board[x][y] == 'X') && (color[x][y] == -1)) {
// Color it:
color[x][y] = c;
// Special case: We have foudn that there is at least one X:
result = std::max(result, 1);
// Try the adjacent hexagons:
for (int nx = max(0, x-1); nx <= min(n-1, x+1); nx++) {
for (int ny = max(0, y-1); ny <= min(n-1, y+1); ny++) {
// The hexagon is adjacent and has an X:
if ((nx - x != ny - y) && (board[nx][ny] == 'X')) {
// continue the DFS, negate the color:
dfsBipartiteColor(nx,ny, !c);//
// Special case: We now know there are two adjacent X:
result = std::max(result, 2);
// If the color is not consistent, the graph is not bipartite:
if (color[nx][ny] == c) {
result = 3;
}
}
}
}
}
上記のコードで再帰実行後のステートメントはいつですか?
コードをステップ実行してその動作を確認してみませんか?それははるかに啓発的であり、学ぶ良いスキルです。 – NathanOliver
はい私はコード上でそれを行いましたが、再帰実行後のステートメントがあるか、または順番がわからない場合 – mathematicalerdos
いいえ、コードをステップ実行しませんでした。もしあなたがそれをしたら、実行されるものと実行されるものが正確に表示されます。 – NathanOliver