Java - Tính giá trị của biểu thức R = 1 + 2^2 + 3^3 + ... + n^n (n > 0).

Viết chương trình tính giá trị của biểu thức R = 1 + 2^2 + 3^3 + ... + n^n với n là số bất kỳ được nhập từ bàn phím (n > 0).

Yêu cầu: Chương trình phải kiểm tra số n nhập vào có phải là số nguyên dương không, nếu không thì yêu cầu người dùng nhập lại.

Bài giải

-------------------- ######## --------------------

Bài giải.
package vong_lap_for;

import java.util.Scanner;

public class TinhGiaTriBieuThucR {

	public static void main(String[] args) {
		int n, sum = 0;
		Scanner scanner = new Scanner(System.in);
		
		// n còn nhỏ hơn 1 thì còn nhập lại
		do {
			System.out.println("Mời bạn nhập vào số n: ");
			n = scanner.nextInt();
		} while (n < 1);
		
		/*
		 * tính giá trị của biểu thức
		 * i còn nhỏ hơn hoặc bằng n thì còn thực hiện thân vòng lặp
		 */
		for (int i = 1; i <= n; i++) {
			int temp = 1;
			// duyệt j từ 1 đến khi j còn nhỏ hơn hoặc bằng i
			for (int j = 1; j <= i; j++) {
				temp *= i;
			}
			sum += temp;
		}
		
		System.out.println("Tổng = " + sum);
	}

}
Kết quả sau khi biên dịch chương trình:

Giải thích hoạt động của chương trình trên: Giả sử tôi nhập vào giá trị biến n = 3.

Bước 1: Vòng lặp for bên ngoài khởi tạo biến i = 1 và vì 1 < 3 nên chuyển sang Bước 2.

Bước 2: Khởi tạo biến temp = 1.

Bước 3: Vòng lặp for bên trong khởi tạo biến j = 1 và vì 1 = 1 nên sẽ tính giá trị biến temp = temp * i = 1.

Bước 4: Thực hiện biểu thức j++, lúc này biến j = 2 và vì 2 > 1 nên chuyển sang Bước 5.

Bước 5: Tính giá trị biến sum = sum + temp = 1.

Bước 6: Quay lại vòng lặp for bên ngoài thực hiện biểu thức i++, lúc này biến i = 2 và vì 2 < 3 nên chuyển sang Bước 7.

Bước 7: Vòng lặp for bên trong khởi tạo biến j = 1 và vì 1 < i = 2 nên sẽ tính giá trị biến temp = temp * i = 2.

Bước 8: Thực hiện biểu thức j++, lúc này j = 2 và vì 2 = 2 nên sẽ tính giá trị biến temp = temp * i = 4.

Bước 9: Thực hiện biểu thức j++, lúc này biến j = 3 và vì 3 > 2 nên chuyển sang Bước 10.

Bước 10: Tính giá trị biến sum = sum + temp = 5.

Bước 11: Quay lại vòng lặp for bên ngoài thực hiện biểu thức i++, lúc này biến i = 3 và vì 3 = 3 nên chuyển sang Bước 12.

Bước 12: Vòng lặp for bên trong khởi tạo biến j = 1 và vì 1 < i = 3 nên sẽ tính giá trị biến temp = temp * i = 3.

Bước 13: Thực hiện biểu thức j++, lúc này j = 2 và vì 2 < 3 nên sẽ tính giá trị biến temp = temp * i = 3 * 3 = 9.

Bước 14: Thực hiện biểu thức j++, lúc này biến j = 3 và vì 3 = 3 nên sẽ tính giá trị biến temp = temp * i = 27.

Bước 15: Thực hiện biểu thức j++, lúc này biến j = 4 và vì 4 > j = 3 nên chuyển sang Bước 16.

Bước 16: Tính giá trị biến sum = sum + temp = 5 + 27 = 32.

Bước 17: Quay lại vòng lặp for bên ngoài thực hiện biểu thức i++, lúc này biến i = 4 và vì 4 > i = 3 nên chuyển sang Bước 18.

Bước 18: Hiển thị tổng sum = 32 ra màn hình. Chương trình kết thúc.

Nguồn: freetuts.net