本文主要是介绍寻找和为定值的n个数(Java版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Java基于递归的版本: 代码里有简略的注释
import java.util.*;public class Demo {static ArrayList<ArrayList<Integer>> lists = new ArrayList<>();static LinkedList<Integer> fuck = new LinkedList<>();public static void main(String[] args) {int arr[] = new int[100];for(int i=0;i<100;i++){arr[i] = i+1;}//100是查找和为100的数字,0是数组开始位置,arr.length-1是数组结束位置findList(100,arr,0,arr.length-1);for(ArrayList list :lists){System.out.println(list);}}//sun要找的和为定值的数,arr数组是找数的范围,start是标记当前递归的下标,end是用来跟start判断的如果小于start就结束递归public static void findList(int sum, int[] arr, int start, int end) {if (start >= end) {return;}if (sum == arr[start]) {ArrayList<Integer> list = new ArrayList<>();for(Integer num :fuck){list.add(num);}list.add(arr[start]);lists.add(list);} else {if (sum > arr[start]) {fuck.add(arr[start]);findList(sum - arr[start], arr, start + 1, end);fuck.remove(fuck.size()-1);}findList(sum, arr, start + 1, end);}}}
这篇关于寻找和为定值的n个数(Java版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!