递归练习

时间:2015-07-19 22:36:46

标签: java recursion

我是Java的新手并且正在进行递归练习。我找到了这个网站,我真的可以帮助解决这个问题并解释如何解决这个问题。这是否需要拆分数组或以其他方式解决?

  

到目前为止包括的内容如下:

public class RecursionUtils extends Object {
public static final int findMaxRecursively(List<Integer> numbers) {

    return 0;
     

为了完成代码,需要以下内容:

     
      
  1. findMaxRecursively

  2.   
  3. 获取一个数字列表,并使用递归调用查找其中最大的数字。

  4.         

    @param为数字列表编号,可以是奇数或偶数

         

    @return列表中最大的数字。

         

    提示:您的基本情况可能是2个数字的比较。回报   价值也必须改变。

任何帮助都会受到赞赏,所以我可以更好地理解递归。

2 个答案:

答案 0 :(得分:1)

试试这个:

private static final int findMaxRecursively(List<Integer> numbers, int index, int max) {
    return index >= numbers.size()
        ? max
        : findMaxRecursively(numbers, index + 1, Math.max(numbers.get(index), max));
}

public static final int findMaxRecursively(List<Integer> numbers) {
    return findMaxRecursively(numbers, 0, Integer.MIN_VALUE);
}

public static void main(String[] args) {
    List<Integer> numbers = Arrays.asList(1, -1, 2, -2, 3, -3);
    System.out.printf("Max is %d in %s%n", findMaxRecursively(numbers), numbers);
}

答案 1 :(得分:0)

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class RecursionUtils extends Object {

    public static final int findMaxRecursively(List<Integer> numbers) {
        if (numbers.size() > 0) {// terminating condition... if there are no
                                    // elements remaining in the list then
                                    // return 0..
            int num1 = numbers.remove(0); // remove the first element of the
                                            // list, thus in the process we
                                            // truncate the list by one element.
            int num2 = findMaxRecursively(numbers); // find the max from the
                                                    // rest of the list..

            return num1 > num2 ? num1 : num2;
        } else
            return 0;
    }

    public static void main(String[] args) {
        List<Integer> numbers = new LinkedList<>();
        numbers.addAll(Arrays
                .asList(new Integer[] { -1, -2, -3, 0, 6, 5, 3, 2 }));
        System.out.println("The entered list is :");
        System.out.println(numbers);
        System.out.println("\nThe max element is : "
                + findMaxRecursively(numbers));
    }
}