递归条件 - 缺少基本情况

时间:2014-04-28 09:22:12

标签: javascript recursion

我已经把我的脑袋缠绕在递归上,现在我正试图将它放入实际应用程序而不会出现堆栈溢出(或者再次执行Fibonacci序列!Pun意图。

在我的例子中,我循环了一系列相似的项目,直到赎金机会元素是唯一的。任务完成。 你总是需要一个基本案例和任何递归函数的递归情况和终止条件??我无法想到这个例子的基本情况。

var myArray = ["bananas", "bananas", "bananas", "bananas", "Gwen Stefani!"];

var tries = 0;
alert(getIt(myArray, tries));

function getIt(arr, num)
{
  r = Math.floor(Math.random()* arr.length);

  // Base case
  // something here??
  // but only if we don't need to call
  // the recursive function

  // termination case
  if (arr[r] != "bananas") 
    {
            alert("Found on attempt " + num);
        return arr[r];
    }

  // Recursive case
  return getIt(arr, num+1);
}

1 个答案:

答案 0 :(得分:1)

这取决于您使用的是什么术语,但http://en.wikipedia.org/wiki/Recursion_%28computer_science%29#Recursive_functions_and_algorithms(例如)的基本和终止案例具有相同的含义。在您的代码中,终止案例是基本案例,因为它是产生结果的原因。

作为旁注,你可以这样做:

alert(getIt(myArray, 0));

而不是:

var tries = 0;
alert(getIt(myArray, tries));