javascript - 递归条件 - 缺少基本情况

标签 javascript recursion

我已经开始研究递归,现在正尝试将其投入实际应用,而不会出现堆栈溢出(或再次执行斐波那契数列!双关语。

在我的示例中,我循环遍历一组相似的项目,直到有机会该元素是唯一的。任务完成。 对于任何递归函数,您是否始终需要基本情况​​和递归情况以及终止条件?我想不出这个例子的基本情况。

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);
}

最佳答案

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

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

alert(getIt(myArray, 0));

而不是这个:

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

关于javascript - 递归条件 - 缺少基本情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23337218/

相关文章:

javascript - Nestable jQuery 插件 - 禁用列表之间的拖动

java - 8 非攻击皇后算法与递归

长度 vs 折叠 vs 显式递归的性能特征

javascript - 为什么对象的构造函数对应于父对象的构造函数?

php - 为什么这个 js-php 生成的位置引用在 IE8 中不起作用?

JavaScript EventSource 在 Apache 基本身份验证后不会打开连接

javascript - 加载特定 div 时隐藏元素

JavaScript递归,深入理解

qt - 从绝对文件路径使用分层结构填充 QTreeWidget

python - os.walk() python : xml representation of a directory structure, 递归