首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >学习递归函数和跟踪的最好方法是什么?

学习递归函数和跟踪的最好方法是什么?
EN

Stack Overflow用户
提问于 2018-01-29 12:54:43
回答 1查看 48关注 0票数 -1

在我的课上,我们将学习java中的递归函数。学习递归的最好方法是什么?您建议如何跟踪它?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-29 13:36:40

那么,递归可以在任何可以迭代的地方简单地使用。基于迭代的算法通常在生产阶段被替换为递归一次,因为它们真的很简单和直观。

摘要

想象一下,一个孩子被告知要把砖头收集到盒子里。孩子很可能会简单地“从地板上拿一块砖放进盒子里”和“只要地板上没有更多的砖就重复这一步”。每一个孩子都在问自己:“还有没有我需要收集的砖头?”、“哦!这里有一块,所以我把它放进了盒子里”或者“没有砖块了!”因此,当机制调用自身时,这种行为就是递归。这样的算法有两个特点:

  • end of algorithm被清楚地说明,
  • “大”,复杂的问题已经被分解为基本问题,并且在复杂度比开始时更低的问题上。

示例

考虑一个递归搜索函数:

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
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48494592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档