📜  使用递归计算列表中数字总和的Java程序

📅  最后修改于: 2022-05-13 01:54:57.959000             🧑  作者: Mango

使用递归计算列表中数字总和的Java程序

ArrayList是 Collection 框架的一部分,存在于Java.util 包中。它为我们提供了Java中的动态数组。虽然,它可能比标准数组慢,但在需要对数组进行大量操作的程序中很有帮助。此类位于Java.util 包中。

插图:

Input  : [1, 3, 9]  
Output : 13

这里最简单的方法是将 List 的元素相加并维护一个计数器,在遍历 List 时将 sum 存储在其中。提前方法可以是将 List 转换为数组并执行相同的操作。现在更优的方法可以是使用递归,同时使用递归原理自动计算 List 或数组的子部分。此处描述并实施了该最佳方法,如图所示。

方法:

  1. 将 ArrayList 转换为数组并在数组上使用递归原理。
  2. 使用ArrayList.add()方法

方法一: ArrayList转数组,在数组上使用递归原理。  

数组列表到数组

它是通过将 ArrayList 转换为数组并在数组上使用递归原理来实现的。列表中的递归到数组转换和使用 add() 方法计算元素的总和。

方法:

  1. 将列表的元素作为用户的输入。
  2. 将列表转换为相同大小的数组。
  3. 向其中添加元素。
  4. 使用递归原理计算数组的总和。

使用递归计算列表中数字的总和

例子

Java
// Java Program to Compute Sum of Numbers in a List
// by converting to arrays and applying recursion
 
// Importing java input/output classes
import java.io.*;
// Importing List and ArrayList class from
// java.util package
import java.util.ArrayList;
import java.util.List;
 
// Class
public class GFG {
 
    // Method to calculate sum recursively
    public static int sumOfArray(Integer[] a, int n)
    {
        if (n == 0)
            return a[n];
        else
            return a[n] + sumOfArray(a, n - 1);
    }
 
    // Method- main()
    public static void main(String[] args)
    {
        // Creating a List of Integer type
        // Declaring an object- 'al'
        List al = new ArrayList();
 
        // Adding elements to the List
        // Custom inputs
        al.add(1);
        al.add(2);
        al.add(3);
        al.add(4);
        al.add(5);
 
        // Converting above List to array
        // using toArray() mmethod
        Integer a[] = new Integer[al.size()];
        al.toArray(a);
 
        // Display message
        System.out.print("Elements in List : ");
 
        // Printing array of objects
        // using for each loop
        for (Integer obj : a) {
            System.out.print(obj + " ");
        }
 
        // Recursion math to calculate sum snd
        // storing sum in a variable
        int sum = sumOfArray(a, a.length - 1);
 
        // Next line
        System.out.println();
 
        // Print the sum returned above
        System.out.println("Sum of elements  : " + sum);
    }
}


Java
// Java Program to Compute the Sum of Numbers in a List
// using Recursion via ArrayList.add() method
 
// Importing all classes of
// java.util package
import java.util.*;
 
// Class
public class GFG
{  
  // Declaring variables outside main class
  int sum = 0, j = 0;
 
  // Main driver method
  public static void main(String[]args)
  {
    /*
    // Taking the input from the user
    int n;
    Scanner s = new Scanner(System.in);
 
    // Display message
    System.out.print("Enter the no. of elements :");
     
    // Reading integer elements using nextInt() method
    n = s.nextInt();
 
    // Display message
    System.out.println("Enter all the elements you want:");
    */
 
    // Creating an object of List of Integer type
    List < Integer > list = new ArrayList < Integer > ();
 
    // Adding elements to object of List
    // Custom inputs to show sum
    list.add(10);
    list.add(90);
    list.add(30);
    list.add(40);
    list.add(70);
    list.add(100);
    list.add(0);
     
    System.out.println("Elements in List : " + list);
    /*
    // If input is through user than
     
    // For loop to add elements inside List
    for (int i = 0; i < n; i++)
    {
      // Adding integer elements in the list
      list.add(s.nextInt());
    }
    */
 
    // Converting List to Array
    Integer[] a = list.toArray(new Integer[list.size()]);
 
    // Initialising object of Main class
    GFG elem = new GFG();
 
    // Finding sum of elements in array
    // via add() method using recursion
    int x = elem.add(a, a.length, 0);
     
    // Print the sum of array/elements initially in List
    System.out.println("Sum of elements in List :" + x);
  }
 
  // add() method to add elements in array
  // using recursion
  int add(Integer arr[], int n, int i)
  {
    if(i < n)
    {
        return arr[i] + add(arr, n, ++i);
    }
    else
    {
        return 0;
    }
  }
}


输出
Elements in List : 1 2 3 4 5 
Sum of elements  : 15

方法 2:使用ArrayList.add()方法

此方法将指定的元素附加到此列表的末尾

句法:

public boolean add(E element) ;

参数:要附加到此列表的对象。

返回类型:它将始终返回布尔值 true 并且签名也是如此,因为集合系列中的其他类需要返回类型。

例外:不适用

例子:

Java

// Java Program to Compute the Sum of Numbers in a List
// using Recursion via ArrayList.add() method
 
// Importing all classes of
// java.util package
import java.util.*;
 
// Class
public class GFG
{  
  // Declaring variables outside main class
  int sum = 0, j = 0;
 
  // Main driver method
  public static void main(String[]args)
  {
    /*
    // Taking the input from the user
    int n;
    Scanner s = new Scanner(System.in);
 
    // Display message
    System.out.print("Enter the no. of elements :");
     
    // Reading integer elements using nextInt() method
    n = s.nextInt();
 
    // Display message
    System.out.println("Enter all the elements you want:");
    */
 
    // Creating an object of List of Integer type
    List < Integer > list = new ArrayList < Integer > ();
 
    // Adding elements to object of List
    // Custom inputs to show sum
    list.add(10);
    list.add(90);
    list.add(30);
    list.add(40);
    list.add(70);
    list.add(100);
    list.add(0);
     
    System.out.println("Elements in List : " + list);
    /*
    // If input is through user than
     
    // For loop to add elements inside List
    for (int i = 0; i < n; i++)
    {
      // Adding integer elements in the list
      list.add(s.nextInt());
    }
    */
 
    // Converting List to Array
    Integer[] a = list.toArray(new Integer[list.size()]);
 
    // Initialising object of Main class
    GFG elem = new GFG();
 
    // Finding sum of elements in array
    // via add() method using recursion
    int x = elem.add(a, a.length, 0);
     
    // Print the sum of array/elements initially in List
    System.out.println("Sum of elements in List :" + x);
  }
 
  // add() method to add elements in array
  // using recursion
  int add(Integer arr[], int n, int i)
  {
    if(i < n)
    {
        return arr[i] + add(arr, n, ++i);
    }
    else
    {
        return 0;
    }
  }
}
输出
Elements in List : [10, 90, 30, 40, 70, 100, 0]
Sum of elements in List :340