【发布时间】:2021-07-25 21:04:48
【问题描述】:
我需要实现一个递归函数(它 接受 Array 和 sum 作为参数)来检查它是否包含四个元素 有给定的总和。
例如:
int[] intArray = {12, 18, 3, 2, 8, 2, 3, 5};
总和 = 35
输出: 存在四胞胎。
我创建了第一个非递归函数,然后尝试将其转换为递归函数,但没有成功。
这是我的非递归函数:
public class NonRecursive4Sum {
void FourElementsSum (int arr[], int n, int X)
{
// In first step we save first number and search for other 3
for (int i = 0; i < n - 3; i++)
{
// Save 2. number and search for 2
for (int j = i + 1; j < n - 2; j++)
{
// Save 3. and search for last one
for (int k = j + 1; k < n - 1; k++)
{
// Here we save last number
for (int l = k + 1; l < n; l++)
{
// This is the part I am trying to transform to recursive function
if (arr[i] + arr[j] + arr[k] + arr[l] == X){
System.out.print("Quadruplets exists");
}
}
}
}
}
}
public static void main(String[] args)
{
NonRecursive4Sum findfour = new NonRecursive4Sum ();
int[] intArray= {12, 18, 3, 2, 8, 2, 3, 5};
findfour.FourElementsSum(intArray, 8, 35);
}
}
这是我尝试转换为递归函数的 if 语句:
if (arr[i] + arr[j] + arr[k] + arr[l] != X){
FourElementsSum ();
}
else if(arr[i] + arr[j] + arr[k] + arr[l] == X) {
System.out.println("Quadruplets Exist");
}
【问题讨论】:
-
不在这里发帖,如果你只是谷歌,你可以在网上找到解决方案:techiedelight.com/4-sum-problem
-
谢谢 Shubham,我只是对它是否可以从 for 循环创建递归函数感兴趣。
标签: java arrays if-statement recursion transform