递归算法(recursion algorithm)在计算机科学中,它是一种解决问题的方法,通过重复将问题分解为类似的子问题。绝大多数编程语言支持函数的自调用可以通过调用自己来递归。当然,递归算法不是万能的,它也有一些缺点。我们来谈谈这篇文章递归算法的优缺点。
一、递归算法的优点:
1.大问题变成小问题,代码量可以大大降低;
这与递归算法的原理是一致的,递归算法的核心思想是简化复杂性。对于一个复杂的问题,将原始问题分解为几个相对简单的子问题,直到子问题简单到可以直接解决,即递归的出口,使原始问题有递归解决方案。
2.用有限的句子定义对象的无限集合;
这似乎不容易理解,但结合实际例子,我们的理解可以大大加深。举一个最经典的例子,求斐波那契数列。
public int f(int n){
if(n == 1 || n == 2){ // 基线条件(递归出口)
return 1;
}
return f(n-1) + f(n-2); ///递归条件
}
3.代码更简洁清晰,可读性更好;
在实际编码过程中,使用递归算法的代码给人一种更清晰的整体感觉,让人一目了然代码的核心,让看代码的人有更好的可读性,更容易理解。由于递归算法具有较强的逻辑思维能力,解决问题的方法体现在代码中,使代码看起来特别清晰。
种对你来说,看看什么更重要。”因此,虽然计算理论可以证明递归的作用可以完全取代循环,但有时我们应该面对递归算法的缺点,培养优势,规避弱点,使递归算法的应用更加合理,而不是盲目地使用递归算法。