我很乐意,如果你们能向我解释为什么以下的递归代码不会打印“test”这个词。提前谢谢。
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));
}
}
答案 0 :(得分:2)
返回后的语句永远不会执行。自从第一次
return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
不依赖于任何条件,不执行以下代码。
答案 1 :(得分:1)
当控制到达return ...
时,它只返回并且不执行下一行。也许你错过了一些逻辑?
截至目前,您可以删除此部分无关紧要
ft_putstr("test");
if(checkChar(tBoard,tetriminos[i]))
{
dBoard = dBoard2;
return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
}