Cơ bản về đệ quy
Thuộc phần Nền tảng cơ bản trong hành trình C của Coddy. Bài học 50 trên 63.
Đệ quy là một kỹ thuật trong đó hàm gọi chính nó để giải quyết một vấn đề. Cách này giống như giải quyết một vấn đề lớn bằng cách chia nó thành những vấn đề nhỏ hơn, tương tự.
Hãy cùng xem một hàm đệ quy đơn giản để tính giai thừa:
int factorial(int n) {
// Trường hợp cơ sở: giai thừa của 0 hoặc 1 là 1
if (n <= 1) {
return 1;
}
// Trường hợp đệ quy: n! = n * (n-1)!
return n * factorial(n - 1);
}Mỗi hàm đệ quy cần có:
- Trường hợp cơ sở để dừng đệ quy
- Trường hợp đệ quy tiến gần đến trường hợp cơ sở
Ví dụ, tính factorial(3):
- factorial(3) gọi factorial(2)
- factorial(2) gọi factorial(1)
- factorial(1) trả về 1 (trường hợp cơ sở)
- factorial(2) trả về 2 * 1 = 2
- factorial(3) trả về 3 * 2 = 6
Thử thách
DễTạo một hàm (function) tên là sumToN, dùng đệ quy để tính tổng các số từ 1 đến n.
Ví dụ:
- sumToN(3) sẽ trả về 6 (1 + 2 + 3)
- sumToN(5) sẽ trả về 15 (1 + 2 + 3 + 4 + 5)
Hàm của bạn cần:
- Dùng trường hợp cơ sở khi n bằng 1 (trả về 1)
- Nếu không, trả về n cộng với tổng các số từ 1 đến (n-1)
Tự làm thử
#include <stdio.h>
// Viết hàm (function) sumToN tại đây
// Đừng thay đổi hàm main()
int main() {
int n;
scanf("%d", &n);
printf("%d", sumToN(n));
return 0;
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Nền tảng cơ bản
2Biến
Kiểu dữ liệuSố nguyênSố thực - DoubleKý tựGiá trị BooleanHằng sốCơ bản về printfQuy tắc đặt tên biếnChuyển đổi kiểu phần 1Chuyển đổi kiểu phần 2Thử thách ôn tậpTự luyện tập: Trình biên dịch C online