使用递归计算列表中数字总和的Java程序
ArrayList是 Collection 框架的一部分,存在于Java.util 包中。它为我们提供了Java中的动态数组。虽然,它可能比标准数组慢,但在需要对数组进行大量操作的程序中很有帮助。此类位于Java.util 包中。
插图:
Input : [1, 3, 9]
Output : 13
这里最简单的方法是将 List 的元素相加并维护一个计数器,在遍历 List 时将 sum 存储在其中。提前方法可以是将 List 转换为数组并执行相同的操作。现在更优的方法可以是使用递归,同时使用递归原理自动计算 List 或数组的子部分。此处描述并实施了该最佳方法,如图所示。
方法:
- 将 ArrayList 转换为数组并在数组上使用递归原理。
- 使用ArrayList.add()方法
方法一: ArrayList转数组,在数组上使用递归原理。
它是通过将 ArrayList 转换为数组并在数组上使用递归原理来实现的。列表中的递归到数组转换和使用 add() 方法计算元素的总和。
方法:
- 将列表的元素作为用户的输入。
- 将列表转换为相同大小的数组。
- 向其中添加元素。
- 使用递归原理计算数组的总和。
例子
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