什么类型的递归是带有“OR”的return语句?

时间:2016-10-23 19:49:25

标签: java recursion big-o pseudocode

这是我的递归程序的伪代码,它在数组的右侧或左侧移动一个圆圈。我正在尝试找出复杂性(我认为是n,数组A的大小,或者它可能是2 ^ n,因为它可以向左或向右返回?)。

我也试图弄清楚这是什么类型的递归,因为它在最后一个return语句中有一个OR,但我无处可以找到有关此信息的信息。

 Boolean rightWing (int circle, Array A, List<int> checkerList)

Integer lastPlace equals A.length - 1

If circle equals lastPlace then // base case for recursion
    Return true

If circle < 0 then
    Return false

If circle > lastPlace then
    Return false

// impossible case
If checkerList contains (circle) returns True then
    Return false

checkerList.add(circle) // add the circle to the list for the checker if it's an impossible case

Integer moveRight equals circle + A[circle] 
Integer moveLeft equals circle - A[circle]

Return rightWing ( moveRight, A, checkerList) or rightWing(moveLeft, A, checkerList)

1 个答案:

答案 0 :(得分:0)

我不确定你的算法是否正确但是从你所说的我认为你会检查你的数组的每个元素一次所以O(n)与n = sizeof(A)是正确的。

您正在寻找的那种重复调用是尾递归或非尾递归。 What is tail recursion?