次の再帰的コードが「test」という単語をなぜ印刷しないのか、私に説明することができれば嬉しいです。前もって感謝します。Cコードの背後にあるロジックを理解する
void drawTetriminosEachPosition(int **tetriminos, char **dBoard, int **tBoard, int i){
char c;
char **dBoard2;
if(tetriminos[i] == '\0')
{
return;
}
else
{
dBoard2 = dBoard;
DrawTetrimino(tBoard, tetriminos[i], dBoard, i+65);
}
i++;
return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
ft_putstr("test");
if(checkChar(tBoard,tetriminos[i]))
{
dBoard = dBoard2;
return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
}
}
問題ではない、なぜそれが ''「test」を印刷する必要がありますか?何も 'return'ステートメントの後に実行されません – UnholySheep
私はまだ十分に再帰的な理解していないようだ、私は一度tetriminos [i] == '\ 0'それはdrawTetriminosEachPositionの前の呼び出しに戻りますと思ったその時点から続ける – Patratel
しかし、あなたは戻ってきている!戻り値を削除します - ft_putstrの前に関数を呼び出してください。 – cdcdcd