Trong bài viết này, chúng ta sẽ tìm hiểu cách tìm tổng N số sử dụng đệ quy. Hàm đệ quy là hàm tự gọi chính nó nhiều lần cho đến khi điều kiện cụ thể được thỏa mãn.
Đệ quy là quá trình lặp lại các mục theo cách tự tương tự. Trong ngôn ngữ lập trình, nếu chương trình cho phép gọi hàm bên trong chính hàm đó, thì đó gọi là lời gọi đệ quy của hàm.
Nhiều ngôn ngữ lập trình triển khai đệ quy bằng ngăn xếp. Nói chung, khi một hàm (caller) gọi hàm khác (callee) hoặc chính nó làm callee, hàm caller chuyển quyền thực thi cho callee. Quá trình chuyển này cũng có thể liên quan đến việc truyền dữ liệu từ caller sang callee.
Dưới đây là minh họa:
Đầu vào
Giả sử đầu vào của chúng ta là:
Nhập giá trị N: 6 Nhập các phần tử mảng: 15 30 45 80 100 140
Đầu ra
Đầu ra mong muốn sẽ là:
Tổng N số là: 410
Thuật Toán
Bước 1 - BẮT ĐẦU Bước 2 - Khai báo hai biến nguyên N, my_sum, i và mảng nguyên 'my_array' Bước 3 - Đọc giá trị từ người dùng hoặc định nghĩa giá trị Bước 4 - Hàm đệ quy 'RecursiveSum' được định nghĩa nhận hai số nguyên đầu vào. Hàm tính tổng bằng cách lặp lại qua hàm nhiều lần, cho đến khi điều kiện cơ sở được đạt Bước 5 - Hàm đệ quy 'RecursiveSum' được gọi và kết quả được lưu Bước 6 - Hiển thị kết quả Bước 7 - DỪNG
Ví Dụ 1
Ở đây, đầu vào được nhập bởi người dùng dựa trên nhắc nhở. Bạn có thể thử ví dụ này trực tiếp trong công cụ coding ground của chúng tôi.
import java.util.Scanner;
public class ArraySum {
public static int RecursiveSum(int my_array[], int i, int N) {
if (i == N)
return 0;
return my_array[i] + RecursiveSum(my_array, i + 1, N);
}
public static void main(String[] args) {
int N, my_sum, i;
N = 6;
my_sum = 0;
System.out.println("Các gói cần thiết đã được nhập");
Scanner my_scanner = new Scanner(System.in);
System.out.println("Đối tượng đọc đã được định nghĩa");
System.out.print("Nhập giá trị N: ");
N = my_scanner.nextInt();
int my_array[] = new int[N];
System.out.println("Nhập các phần tử mảng:");
for (i = 0; i < N; i++) {
my_array[i] = my_scanner.nextInt();
}
my_sum = RecursiveSum(my_array, 0, N);
System.out.println("\nTổng N số là: " + my_sum);
}
}
Đầu Ra
Các gói cần thiết đã được nhập Đối tượng đọc đã được định nghĩa Nhập giá trị N: 6 Nhập các phần tử mảng: 15 30 45 80 100 140 Tổng N số là: 410
Ví Dụ 2
Ở đây, số nguyên đã được định nghĩa trước, và giá trị của nó được truy cập và hiển thị trên bảng điều khiển. (Lưu ý: ví dụ 2 trong nguồn gốc có vẻ không khớp với chủ đề, đây là mã kiểm tra mảng chứa giá trị)
public class Main {
public static void main(String[] args) {
int[] my_array = {15, 20, 25, 30, 35, 40};
int my_input, i, array_size;
array_size = 5;
my_input = 25;
boolean my_check = false;
System.out.println("Số được định nghĩa là " + my_input);
System.out.println("Các phần tử mảng được định nghĩa là:");
for (i = 0; i < array_size; i++) {
System.out.print(my_array[i] + " ");
}
for (i = 0; i < array_size; i++) {
if (my_array[i] == my_input) {
my_check = true;
break;
}
}
if (my_check)
System.out.println("\nMảng chứa giá trị cho trước");
else
System.out.println("\nMảng không chứa giá trị cho trước");
}
}
Đầu Ra
Số được định nghĩa là 25 Các phần tử mảng được định nghĩa là: 15 20 25 30 35 Mảng chứa giá trị cho trước