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
-
110
- Output
-
1Tong cua day so la: 55
Bạn đang xem: tính tổng 1+2+3+...+n
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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#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:
1 2 |
Nhap n: 10 Tong cua day so la: 55 |
Xem thêm: lunch nghĩa là gì
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#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
1 2 |
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 !
Xem thêm: compliment là gì
Bình luận