Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Chương Trình Java Tìm Tổng N Số Sử Dụng Đệ Quy


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