gpt4 book ai didi

java - 递归问题

转载 作者:行者123 更新时间:2023-11-30 04:50:29 25 4
gpt4 key购买 nike

import java.util.Arrays;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Collections;
import java.util.List;

public class TennisTournament {

public static void main (String [] args) {
Scanner input = new Scanner(System.in);
ArrayList <Integer> nums = new ArrayList<Integer>();
while (input.hasNextInt()) {
nums.add(input.nextInt());
}
System.out.println(nums);
tournament(nums);
}

public static void tournament(ArrayList <Integer> list) {
int midPoint = list.size()/2; // returns the index number of half of the lists size
int midPoint2 = list.size()/2;
if (list.size() != 1 || midPoint != 1) {
for (int i = 0; i < midPoint2; i++) { // while is bigger than mid point, increment by one
if (list.get(i) < list.get(midPoint)) {
Collections.swap(list, i, midPoint);
}
midPoint++;
}
System.out.println(list);
int newPoint = midPoint2/2;
midPoint2 = newPoint;
}
tournament(list);

}
}

好吧,我对递归的想法还很陌生,现在我得到的只是一个无限循环。所以在第一种方法中,我想通过将数组分成两半来分析数组,并将数组前半部分的第一个元素与数组后半部分的第一个元素进行比较,如果第二个元素是更大,然后交换这一切都工作正常,它正在做我想要它做的事情。[3,5,8,2,1,7,6,4][3,7,8,4,1,5,6,2]我想要采取的下一步是我只想将我正在处理的元素减半。所以在第一个实例中,我想将我正在工作的元素数量减半,所以我希望它在 0-list.size()/2 上工作,而不是 0-list.size,所以它只会交换前 4 个数字,然后再重复 2 个数字,直到中点变为 1。只要对我如何实现这一目标有一点了解就太好了。不,不是家庭作业。

最佳答案

我猜当列表大小小于 2 时,您需要停止拆分。

关于java - 递归问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9961126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com