11/11/2018, 23:28
Đệ quy trong C++
Học lập trình C++ Đệ quy trong C++ là quá trình trong đó một phương thức gọi lại chính nó một cách liên tiếp. Một hàm trong C++ gọi lại chính nó được gọi là phương thức đệ quy. Sử dụng đệ quy giúp code chặt chẽ hơn nhưng sẽ khó để hiểu hơn. Cú pháp: kieu_tra_ve ...
Học lập trình C++
Đệ quy trong C++ là quá trình trong đó một phương thức gọi lại chính nó một cách liên tiếp. Một hàm trong C++ gọi lại chính nó được gọi là phương thức đệ quy.
Sử dụng đệ quy giúp code chặt chẽ hơn nhưng sẽ khó để hiểu hơn.
Cú pháp:
kieu_tra_ve ten_ham() {
// code
ten_ham();
}
Ví dụ về đệ quy trong C++
Dưới đây là các ví dụ về cách sử dụng đệ quy trong C++.
Ví dụ 1: vòng lặp vô tận
#include <iostream>
using namespace std;
void p() {
cout << "hello" << endl;
p();
}
int main() {
p();
return 0;
}
Kết quả:
hello hello ... Lỗi tràn bộ nhớ...
Ví dụ 2: vòng lặp có hạn
#include <iostream>
using namespace std;
static int count = 0;
void p() {
count++;
if (count <= 5) {
cout << "hello" << count << endl;
p();
}
}
int main() {
p();
return 0;
}
Kết quả:
hello 1 hello 2 hello 3 hello 4 hello 5
Ví dụ 3: tính giai thừa
#include <iostream>
using namespace std;
int factorial(int n) {
if (n == 1)
return 1;
else
return (n * factorial(n - 1));
}
int main() {
cout << "Giai thua cua 5 la:" << factorial(5);
return 0;
}
Kết quả:
Giai thừa của 5 là: 120
Chương trình trên hoạt động như sau:
factorial(5)
factorial(4)
factorial(3)
factorial(2)
factorial(1)
return 1
return 2*1 = 2
return 3*2 = 6
return 4*6 = 24
return 5*24 = 120
Ví dụ 4: dẫy số Fibonacci
#include <iostream>
using namespace std;
static int n1 = 0, n2 = 1, n3 = 0;
void printFibo(int count) {
if (count > 0) {
n3 = n1 + n2;
n1 = n2;
n2 = n3;
printf(" %d", n3);
printFibo(count - 1);
}
}
int main() {
int count = 15;
cout << n1 << " " << n2; // in 0 và 1
printFibo(count - 2); // n-2 vì 2 so 0 và 1 da duoc in ra
return 0;
}
Kết quả:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
Học lập trình C++