Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng của chuỗi 1 + (1 + 3) + (1 + 3 + 5) + (1 + 3 + 5 + 7) + ...... + (1 + 3 + 5 + 7 + ... + (2n-1)) trong C ++

Trong bài toán này, chúng ta được cho một số n. Nhiệm vụ của chúng ta là tạo một chương trình để tìm tổng của dãy số 1 + (1 + 3) + (1 + 3 + 5) + (1 + 3 + 5 + 7) + …… + (1 + 3 + 5 + 7 +… + (2n-1)).

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào: n =5

Đầu ra: 55

Vì vậy, theo câu hỏi, giả sử một người dùng cho chúng ta một số 'n' và chúng ta phải thêm chuỗi 1 + (1 + 3) + (1 + 3 + 5) + (1 + 3 + 5 + 7) + …… + (1 + 3 + 5 + 7 +… + (2n-1)).

Trước tiên, hãy hiểu ý nghĩa của loạt bài này hơn.

Chúng tôi lấy n =1, khi đó chuỗi trở thành 1.

Chúng ta lấy n =2, khi đó chuỗi trở thành 1+ (1 + 3) vì giá trị của số hạng cuối cùng 2n-1 có thể được tính bằng, 2 lần 2 vượt quá 1, là 3.

Giá trị của n
2n-1
Chuỗi trở thành
1
1
1
2
3
1+ (1 + 3)
3
5
1+ (1 + 3) + (1 + 3 + 5)
4
7
1+ (1 + 3) + (1 + 3 + 5) + (1 + 3 + 5 + 7)

Đến với giải pháp cho vấn đề, nó có thể được giải quyết theo hai cách. Một sẽ là toán học trong đó một biểu thức của tổng tổng có thể nhận được và do đó không cần vòng lặp. Cách còn lại sẽ áp dụng hai vòng lặp trong mã.

Phương pháp tiếp cận trực tiếp bằng cách sử dụng Vòng lặp

Như có thể thấy rằng số hạng của dãy số 1 + (1 + 3) + (1 + 3 + 5) + (1 + 3 + 5 + 7) + …… + (1 + 3 + 5 + 7 +… + (2n-1)) là một chuỗi chính nó. Do đó chúng ta sẽ sử dụng các vòng lặp lồng nhau. Vòng lặp bên ngoài sẽ tính toán số hạng thứ hai. Trong khi vòng lặp bên trong sẽ được sử dụng để tính toán chính nó.

Ví dụ

#include<stdio.h>

int calcSum(int n){
   int sum = 0;
   for (int i = 1; i <= n; i++) {
      // the first value of the term is always 1
      int value = 1;
      for (int j = 1; j <= i; j++) {
         sum += value;
         // next term
         value += 2;
      }
   }
   return sum;
}

int main(){
   int n = 35;
   printf("The sum of the series upto %d is %d ", n , calcSum(n));

}

Đầu ra

The sum of the series upto 35 is 14910

Hoạt động của chương trình:

  • Người dùng nhập giá trị của n. Giả sử, 2.
  • Một biến có tên "sum" được khai báo với giá trị ban đầu là 0
  • Khi i =1, điều kiện i <=n là true và do đó vòng lặp sẽ hoạt động
    • Giá trị của biến “ft” là 1.
    • Giá trị đầu tiên của j là 1. Điều kiện đúng là giá trị của j bằng giá trị của i, là 1. Vì vậy, vòng lặp j hoạt động
    • Giá trị của ft được thêm vào tổng. Do đó tổng trở thành 0 + 1 bằng 1.
    • Giá trị của ft được sửa đổi và tăng lên 2, vì vậy giá trị mới của nó là 1 + 2 =3
    • Giá trị của j tăng 1 và trở thành 2.
    • Nhưng bây giờ điều kiện cho vòng lặp for bên trong là false, như j> i bây giờ. Do đó, vòng lặp j bị thoát.
  • Bây giờ giá trị của i tăng 1 và trở thành 2, vì vậy i =2 và điều kiện là đúng i <=n, do đó đi vào vòng lặp
    • Giá trị của biến “ft” lại được xác định là 1
    • Khi giá trị của j là 1, vòng lặp sẽ hoạt động như j
    • Giá trị của ft được thêm vào tổng. Giá trị của tổng là 1 rồi. Vậy giá trị mới của tổng là 1 + 1 =2
    • Giá trị của ft được sửa đổi và tăng lên 2, do đó giá trị mới của ft trở thành 1 + 2 =3.
    • Giá trị của j tăng 1 và trở thành 2. Điều kiện vòng lặp for đúng vì j bằng i.
    • Giá trị của ft được thêm vào tổng. Giá trị của tổng là 2 rồi. Vậy giá trị mới của tổng là 2 + 3 =5
    • Giá trị của ft được sửa đổi và tăng lên 2, do đó giá trị mới của ft trở thành 3 + 2 =5.
    • Vòng lặp tồn tại
  • Bây giờ giá trị của i tăng 1 và trở thành 3, vì vậy i =3 và điều kiện là sai i <=n, do đó thoát khỏi vòng lặp.
  • In thông báo và giá trị của tổng trên màn hình

Giải pháp toán học:

Bằng cách tìm ra một giải pháp toán học cho câu hỏi và sau đó viết mã, sẽ đơn giản hóa mã của chúng tôi đến một mức độ lớn.

Đặt thuật ngữ chung T n của sê-ri,

Trước khi tiếp tục, chúng ta nên biết rằng chuỗi 1 + 3 + 5 + 7 + 9… .. (2n-1) sẽ có tổng là n 2, và sê-ri

1 2 +2 2 +3 2 +4 2 … .N 2 sẽ có tổng là i 2 =

Chương trình minh họa hoạt động của mã của chúng tôi

Ví dụ

#include<stdio.h>

int calcSum(int n){
   // required sum
   return (( (n) * (n + 1) * (2*n + 1 ) )/6 ) ;
}

int main(){
int n = 35;
   printf("The sum of the series upto %d is %d ", n , calcSum(n));

}

Đầu ra

The sum of the series upto 35 is 14910

Hoạt động của mã trên:

Ví dụ:giả sử người dùng nhập giá trị của n là 2, sau đó giá trị của 2n-1 là 3 và chuỗi trở thành 1+ (1 + 3).

Nhưng hãy để chúng tôi hiểu và nhận được tổng thông qua mã.

  • Hàm sum () được gọi với giá trị 2
  • Hàm tính toán giá trị là 5 và trả nó về hàm chính.
  • Tin nhắn có câu trả lời được in trên màn hình.