Share Đệ Quy C++: Học Cách Sử Dụng Đệ Quy Trong C++

lekieuqazqaz

New member
## Công nguyên C ++: Tìm hiểu cách sử dụng đệ quy trong C ++

Recursion là một kỹ thuật lập trình mạnh mẽ cho phép bạn giải quyết các vấn đề bằng cách gọi một chức năng trong chính nó.Điều này có thể hữu ích cho các vấn đề có cấu trúc đệ quy tự nhiên, chẳng hạn như tìm chuỗi Fibonacci hoặc đi qua một cây.

Trong hướng dẫn này, chúng tôi sẽ học cách sử dụng đệ quy trong C ++.Chúng tôi sẽ bắt đầu bằng cách thảo luận về những điều cơ bản của đệ quy, và sau đó chúng tôi sẽ xem cách sử dụng nó để giải quyết một số vấn đề phổ biến.

### Những điều cơ bản về đệ quy

Recursion là một kỹ thuật lập trình trong đó một hàm tự gọi.Điều này có thể được sử dụng để giải quyết các vấn đề có cấu trúc đệ quy tự nhiên.Ví dụ, chuỗi Fibonacci là một chuỗi các số trong đó mỗi số là tổng của hai số trước.Chúng ta có thể viết một hàm đệ quy để tính toán trình tự Fibonacci như sau:

`` `C ++
int fibonacci (int n) {
if (n <= 1) {
trả lại n;
} khác {
trả về fibonacci (n - 1) + fibonacci (n - 2);
}
}
`` `

Hàm này hoạt động bằng cách tự gọi hai lần, một lần với đối số n - 1 và một lần với đối số n - 2. Trường hợp cơ sở là khi n nhỏ hơn hoặc bằng 1, trong trường hợp đó, hàm chỉ đơn giản là trả về n.Mặt khác, hàm trả về tổng kết quả tự gọi với các đối số n - 1 và n - 2.

### Sử dụng đệ quy để giải quyết vấn đề

Đệ quy có thể được sử dụng để giải quyết nhiều vấn đề khác nhau.Một số vấn đề phổ biến có thể được giải quyết bằng cách sử dụng đệ quy bao gồm:

* Tìm chuỗi Fibonacci
* Đi qua một cái cây
* Giải quyết một mê cung
* Sắp xếp một danh sách

Trong phần này, chúng ta sẽ thấy cách sử dụng đệ quy để giải quyết từng vấn đề này.

#### Tìm chuỗi Fibonacci

Chúng ta có thể sử dụng đệ quy để tìm chuỗi Fibonacci như sau:

`` `C ++
int fibonacci (int n) {
if (n <= 1) {
trả lại n;
} khác {
trả về fibonacci (n - 1) + fibonacci (n - 2);
}
}
`` `

Hàm này hoạt động bằng cách tự gọi hai lần, một lần với đối số n - 1 và một lần với đối số n - 2. Trường hợp cơ sở là khi n nhỏ hơn hoặc bằng 1, trong trường hợp đó, hàm chỉ đơn giản là trả về n.Mặt khác, hàm trả về tổng kết quả tự gọi với các đối số n - 1 và n - 2.

#### đi qua một cái cây

Chúng ta có thể sử dụng đệ quy để đi qua một cây như sau:

`` `C ++
void Traverse (treenode* nút) {
if (node == nullptr) {
trở lại;
}

Traverse (nút-> trái);
Truy cập (nút);
Traverse (Node-> Right);
}
`` `

Chức năng này hoạt động bằng cách tự gọi mình ở các nút con trái và phải của nút hiện tại.Trường hợp cơ sở là khi nút hiện tại là null, trong trường hợp đó, hàm chỉ đơn giản là trả về.

#### giải quyết một mê cung

Chúng ta có thể sử dụng đệ quy để giải quyết một mê cung như sau:

`` `C ++
Bool Solvemaze (Mê cung* Mê cung, Int X, Int Y) {
if (mê cung-> isexit (x, y)) {
trả lại đúng;
} if if (mê cung-> iswall (x, y)) {
trả lại sai;
} khác {
Mê cung-> setvisited (x, y);

// Hãy thử di chuyển về phía bắc, nam, đông và tây.
if (solvemaze (mê cung, x - 1, y)) {
trả lại đúng;
} if if (solvemaze (mê cung, x + 1, y)) {
trả lại đúng;
} if if (solvemaze (mê cung, x, y - 1)) {
trả lại đúng;
} if if (solvemaze (mê cung, x, y + 1)) {
trả lại đúng;
} khác {
=======================================
## Recursive C++: Learn how to use recursion in C++

Recursion is a powerful programming technique that allows you to solve problems by calling a function within itself. This can be useful for problems that have a natural recursive structure, such as finding the Fibonacci sequence or traversing a tree.

In this tutorial, we will learn how to use recursion in C++. We will start by discussing the basics of recursion, and then we will see how to use it to solve some common problems.

### Basics of recursion

Recursion is a programming technique in which a function calls itself. This can be used to solve problems that have a natural recursive structure. For example, the Fibonacci sequence is a sequence of numbers where each number is the sum of the two previous numbers. We can write a recursive function to calculate the Fibonacci sequence as follows:

```c++
int fibonacci(int n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
```

This function works by calling itself twice, once with the argument n - 1 and once with the argument n - 2. The base case is when n is less than or equal to 1, in which case the function simply returns n. Otherwise, the function returns the sum of the results of calling itself with the arguments n - 1 and n - 2.

### Using recursion to solve problems

Recursion can be used to solve a wide variety of problems. Some common problems that can be solved using recursion include:

* Finding the Fibonacci sequence
* Traversing a tree
* Solving a maze
* Sorting a list

In this section, we will see how to use recursion to solve each of these problems.

#### Finding the Fibonacci sequence

We can use recursion to find the Fibonacci sequence as follows:

```c++
int fibonacci(int n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
```

This function works by calling itself twice, once with the argument n - 1 and once with the argument n - 2. The base case is when n is less than or equal to 1, in which case the function simply returns n. Otherwise, the function returns the sum of the results of calling itself with the arguments n - 1 and n - 2.

#### Traversing a tree

We can use recursion to traverse a tree as follows:

```c++
void traverse(TreeNode* node) {
if (node == nullptr) {
return;
}

traverse(node->left);
visit(node);
traverse(node->right);
}
```

This function works by recursively calling itself on the left and right child nodes of the current node. The base case is when the current node is null, in which case the function simply returns.

#### Solving a maze

We can use recursion to solve a maze as follows:

```c++
bool solveMaze(Maze* maze, int x, int y) {
if (maze->isExit(x, y)) {
return true;
} else if (maze->isWall(x, y)) {
return false;
} else {
maze->setVisited(x, y);

// Try moving to the north, south, east, and west.
if (solveMaze(maze, x - 1, y)) {
return true;
} else if (solveMaze(maze, x + 1, y)) {
return true;
} else if (solveMaze(maze, x, y - 1)) {
return true;
} else if (solveMaze(maze, x, y + 1)) {
return true;
} else {
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top