了解递归函数和跟踪的最佳方法是什么?

时间:2018-01-29 04:54:43

标签: java recursion

对于我的课,我们将学习java中的递归函数。学习递归的最佳方法是什么?你会如何推荐追踪它? 谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,递归可以简单地用在迭代可以的任何地方。基于迭代的算法通常在生产阶段被替换为递归,只是因为它们非常简单直观。

抽象

想象一下,一个孩子告诉收集砖块。孩子很可能只是简单地从地板上挑一块砖并把它放进盒子里。并且"重复这个,只要在地板上没有砖块"。孩子每走一步都会问自己,"我需要收集更多的砖块吗?","哦!这是一个,所以我把它放在盒子里#34;或者"不再有砖块!"。因此,当机制调用自身时,这种行为就是递归。这种算法有两个特征:

  • 算法的结尾已明确说明,
  • "大",复杂的问题已经在基本问题上被分解,并且在复杂性较低的问题上已经分解了我们在开始时的问题。

实施例

考虑一个递归搜索函数:

void search(int arr[], int left, int right, int x) {
  if (left > right)
    cout << "Element " << x << " been not found!\n;
  else
    if (tab[left] == x)
      cout << "Element " << x << "been found at position " << left << "\n";
    else
      search(tab, left+1, right, x); // call search() witch updated properties
}

我们的大脑一直在做数学,通常比递归复杂得多。