在不添加参数的情况下计算递归函数的问题(Java)

时间:2012-02-28 06:10:42

标签: java recursion

如果已经回答这个问题我很抱歉,但我能找到的唯一答案是添加一个名为count的参数。

我的作业要求我们使用递归来计算链表中的项目数。

这是我尝试过的(注意我正在使用数组,因为我创建了一个数组,今晚我还有很多工作要做:

public static int countArray(int[] array, int first, int last)
{
    int count;

    if(first < last)
    {
        countArray(array, first + 1, last);
    }

    return (count + 1);
}

正如预期的那样,即使数组的长度为10,也会返回2.我还尝试将count设置为1,但每次调用函数时都会重置它(也是预期的)。我确信有一些显而易见的东西我不知道但是我无法弄清楚它是什么。谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个,

public static int countArray(int[] array, int first, int last){
    if(first < last){
        return 1+countArray(array, first + 1, last);
    }
    return 0;
}

答案 1 :(得分:0)

您应该处理两种情况:

  • 空列表,长度为0
  • 非空列表,其长度(1 +列表长度减去第一个元素)

您可以删除最后一个元素,而不是删除第一个元素。