函数递归的定义:程序调用自身的编程技巧称为递归。
递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接
调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
直接调用:是指函数直接调用自己。
间接调用:是指函数在递归函数调用的下层再调用自己。
例题:
KiKi和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。
代码如下:
#include <iostream>
using namespace std;
int main() {
char board[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cin >> board[i][j];
}
}
bool kiki_win = false, bobo_win = false;
for (int i = 0; i < 3; i++) {
if (board[i][0] == board[i][1] && board[i][1] == board[i][2]) {
if (board[i][0] == 'K') {
kiki_win = true;
} else if (board[i][0] == 'B') {
bobo_win = true;
}
}
}
for (int j = 0; j < 3; j++) {
if (board[0][j] == board[1][j] && board[1][j] == board[2][j]) {
if (board[0][j] == 'K') {
kiki_win = true;
} else if (board[0][j] == 'B') {
bobo_win = true;
}
}
}
if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) {
if (board[0][0] == 'K') {
kiki_win = true;
} else if (board[0][0] == 'B') {
bobo_win = true;
}
}
if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) {
if (board[0][2] == 'K') {
kiki_win = true;
} else if (board[0][2] == 'B') {
bobo_win = true;
}
}
if (kiki_win) {
cout << "KiKi wins!" << endl;
} else if (bobo_win) {
cout << "BoBo wins!" << endl;
} else {
cout << "No winner!" << endl;
}
return 0;
}