首页 / JAVA / java – 递归列表的总和
java – 递归列表的总和
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 递归列表的总和,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2053字,纯文字阅读大概需要3分钟。
内容图文
![java – 递归列表的总和](/upload/InfoBanner/zyjiaocheng/720/51882491754a4ffc97799f0755c11dfc.jpg)
程序员大家好.
我有一个非常愚蠢的问题..我应该递归地将List中的所有整数相加.我知道有一种更简单的方法可以做到这一点,我实际上也制作了这种方法(参见下面的课程).但是这个赋值的意思是我必须将列表分成两半,然后在两半上递归计算总和,最后我只返回half1 half2.
问题是高级方法不返回所有值的总和.谁能帮帮我吗?
方法总和是简单的方法.夏天(总结为丹麦语)是更先进的方法.
package opgave1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Bin?rS?gning {
public static void main(String[] args) {
Random random = new Random();
int tal = 3;
List<Integer> liste = new ArrayList<Integer>();
for (int i = 0; i < 10; i++)
liste.add(random.nextInt(10));
Collections.sort(liste);
System.out.println(liste);
// System.out.println(bin?rS?gning(liste, 0, tal));
System.out.println(summer(liste, 0));
}
public static int bin?rS?gning(List<Integer> liste, int start, int find) {
if (liste.size() > 0) {
int midt = liste.size() / 2;
if (liste.get(midt) == find)
return start + midt;
else if (liste.size() > 1) {
if (find < liste.get(midt))
return bin?rS?gning(liste.subList(0, midt), start, find);
else
return bin?rS?gning(liste.subList(midt + 1, liste.size()), start + midt + 1, find);
}
}
return -1;
}
public static int sum (List<Integer> list, int i)
{
if (i == list.size())
return 0;
else
return list.get(i) + sum(list, i+1);
}
public static int summer(List<Integer> list, int start){
int right = 0;
int left = 0;
if(start == list.size()){
return 0;
} else {
int mid = list.size() / 2;
if(start < mid){
left += list.get(start) + summer(list.subList(0, mid), start+1);
} else if(mid < list.size()){
right += list.get(mid) + summer(list.subList(mid+1, list.size()), mid+1);
}
}
return right + left;
}
}
解决方法:
对于两个基本情况,Ii更容易,如果使用子列表,则不需要额外的’start’参数. (因为这是家庭作业,我不会填写细节.)
public static int summer(List<Integer> list) {
//base 1
if (list.size() == 0) {
}
//base 2
else if (list.size() == 1) {
}
else
{
//no need for if statements now!
int left = summer(list.sublist(/* */))
int right = summer(list.sublist(/* */))
return left + right;
}
}
内容总结
以上是互联网集市为您收集整理的java – 递归列表的总和全部内容,希望文章能够帮你解决java – 递归列表的总和所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。