Bài toán: Viết chương trình tính tổng của dãy số sau : S(n) = 1 + 2 + 3 + … + n.
- Input
10
- Output
Tong cua day so la: 55
Bài viết này mình sẽ hướng dẫn các bạn cách tính tổng của dãy số S(n) = 1 + 2 + 3 + … +n bằng hai phương pháp đó là sử dụng đệ quy và vòng lặp.
Cách tính dãy số S(n) bằng phương pháp đệ quy.
Ý tưởng:
- Cách giải này cũng đơn giản: Để tính S(n) thì ta tính S(n-1) cộng với n.
- Các bạn dùng điều kiện neo là S(1) = 1
- Lưu ý: Điều kiện là n nhập vào phải lớn hơn hoặc bằng 1. Để xử lý cách nhập của n ta đơn giản dùng một vòng
do while
để nhập dữ liệu. Nếu n ≤ 0 thì ta tiến hành nhập lại dữ liệu cho n.
Nào chúng ta cùng xem chương trình sau sử dụng đệ quy để tính tổng dãy số S(n)
#include<iostream> using namespace std; int sum(int n) { if (n == 1) return 1; return sum(n - 1) + n; } int main() { int n; do { cout << "Nhap n: "; cin >> n; } while (n <= 0); cout << "Tong cua day so la: " << sum(n)<<endl; system("pause"); return 0; }
Sau khi chạy chương trình trên ta có kết quả sau:
Nhap n: 10 Tong cua day so la: 55
Cách tính dãy số S(n) bằng phương pháp lặp
- Đầu tiên ta khởi tạo giá trị một biến
sum = 0
- Ta dùng một vòng lặp chạy từ 1 đến n.
- Bên trong vòng lặp ta sẽ cộng giá trị của biến sum với i ( 1 ≤ i ≤ n )
- Sau khi chạy xong vòng lặp thì ta tiến hành trả về giá trị của biến sum.
Cùng xem chương trình sau tính tổng dãy số S(n) như sau
#include<iostream> using namespace std; int sum(int n) { int sum = 0; for (int i = 0; i <= n; i++) sum += i; return sum; } int main() { int n; do { cout << "Nhap n: "; cin >> n; } while (n <= 0); cout << "Tong cua day so la: " << sum(n)<<endl; system("pause"); return 0; }
Sau khi chạy chương trình trên thì ta có kết quả sau
Nhap n: 20 Tong cua day so la: 210
Bài viết của mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !
Trả lời