1. Bài tập tính Tính S(n) = CanBac2(n! + CanBac2((n-1)! +CanBac2((n – 2)! + … + CanBac2(2!) + CanBac2(1!)))) có n dấu căn

Bài tập cơ bản này ta có thể có nhiều hướng giải quyết khác nhau, như sử dụng vòng lặp for , sử dụng vòng lặp while, …kết hợp với sử dụng hàm căn bậc hai (sqrt) nằm trong thư viện <math.h> trong ngôn ngữ lập trình C.

Đầu vào sẽ là một biến nguyên n,  yêu cầu của bài toán là tính S(n) = CanBac2(n! + CanBac2((n-1)! +CanBac2((n – 2)! + … + CanBac2(2!) + CanBac2(1!)))) có n dấu căn.

2. Lời giải

Để giải được bài tập tính S(n) = CanBac2(n! + CanBac2((n-1)! +CanBac2((n – 2)! + … + CanBac2(2!) + CanBac2(1!)))) có n dấu căn bạn phải có kiến thức về toán học cơ bản, có kiến thức về lập trình C cơ bản, cách sử dụng vòng lặp và hàm căn bậc hai (sqrt) trong ngôn ngữ lập trinh C.

Các bước thực hiện bài toán như sau:

Bước 1: Khai báo biến int n để gán giá trị của n, khai báo biến float S =0 đển tính tổng, khai báo biến float gt=1 để tính giai thừa.

Bước 2: Ta sẽ sử dụng vòng for với một biến int i = 1 , điều kiện dừng khi nó bằng n và mỗi lần i tăng lên 1.

Bước 3: Trong vòng lặp ta cho biến gt tăng lên i lần và biến S sẽ bằng căn bậc hai của (gt+S).

Bước 4: In biến S ra màn hình.

Chương trình giải bài tập tính S(n) = CanBac2(n! + CanBac2((n-1)! +CanBac2((n – 2)! + … + CanBac2(2!) + CanBac2(1!)))) có n dấu căn như sau :

#include<stdio.h>
#include<math.h>
int main()
{
    //khai bao bien n
    int n;
    //khai bao bien S
    float S=0;
    //khai bao bien gt
    float gt=1;
    do
    {
        printf("\nNhap n(n >= 1): ");
        scanf("%d", &n);
        if(n < 1)//neu N<1 yeu cau nhap lai
        {
            printf("\nn phai >= 1. Xin nhap lai !");
        }
    }while(n < 1);
    // vong lap for bat dau tu i=1 va ket thuc khi i=n, moi lan i tang len 1
    for(int i = 1; i <= n; i++)
    {
    	gt *= i;//tinh gt
        S = sqrt(gt + S);;//gan S = can bac hai cua (gt+S)
    }
    //in S ra man hinh
    printf("\nTong S = %f", S);
}

Ví dụ nhập n=20

Kết quả:

Nhap n(n >= 1): 20

Tong S = 1559776256.000000

3. Tổng kết

Để thực hiện giải bài tập tính S(n) = CanBac2(n! + CanBac2((n-1)! +CanBac2((n – 2)! + … + CanBac2(2!) + CanBac2(1!)))) có n dấu căn bạn đọc cần phải có kiến thức cơ bản về ngôn ngữ lập trình C, bạn cần nắm vững cách nhập xuất căn bản, sử dụng hàm căn bậc hai (sqrt) và các cách sử dụng vòng lặp trong C và các phép toán học cơ bản.

Bài tập trên có thể giải bằng các khác là sử dụng vòng lặp while.

Chương trình như sau:

#include<stdio.h>
#include<math.h>
int main()
{
    //khai bao bien n
    int n;
    //khai bao bien S
    float S=0;
    //khai bao bien gt
    float gt=1;
    do
    {
        printf("\nNhap n(n >= 1): ");
        scanf("%d", &n);
        if(n < 1)//neu N<1 yeu cau nhap lai
        {
            printf("\nn phai >= 1. Xin nhap lai !");
        }
    }while(n < 1);
    int i=1;//vong lap bat dau tu i=1
    while(i<=n)//vong lap ket thuc neu i=n
    {
    	gt*=i;//tang gt len i lan
        S = sqrt(gt + S);//gan S = can bac hai cua (gt+S)
        i++;//moi lan i tang len 1
    }
    //in S ra man hinh
    printf("\nTong S = %f", S);
}

Ví dụ tôi nhập n=10

Kết quả:

Nhap n(n >= 1): 10

Tong S = 1905.099121