【发布时间】:2014-07-07 14:36:30
【问题描述】:
我正在用 C 语言编写井字游戏,但在游戏板上放置符号的功能存在问题。代码如下:
int aiPutSign(int difficultyLevel, char board[])
{
if(difficultyLevel == 1)
{
srand(time(NULL));
int field = rand() % 9;
return board[field] == ' ' ? field : aiPutSign(difficultyLevel, board);
} else if(difficultyLevel == 2)
{
//to do
return 2;
} else if(difficultyLevel == 3)
{
//to do
return 3;
}
}
不幸的是,我收到分段错误错误。我只知道递归存在问题并导致错误,但我不知道这是如何发生的以及如何修复它。
简而言之:棋盘是包含 9 个空格的 9 个字符数组,我在每个玩家的每一步移动后都在其中放置 X 和 O 符号。如果玩家(这里是计算机 AI)尝试在已填充的字段上签名,则递归进来并且 rand() 生成另一个字段数。
【问题讨论】:
-
如果递归函数导致段错误,则暗示它不会终止(在您的情况下:
board[field] == ' '始终为 0)。
标签: c arrays recursion char tic-tac-toe