对于我的课,我们将学习java中的递归函数。学习递归的最佳方法是什么?你会如何推荐追踪它? 谢谢!
答案 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
}
我们的大脑一直在做数学,通常比递归复杂得多。