方法自己调用自己。根据上一步得到结果进行下一步的操作。
递归并不具备性能上的优势,有时候循环都比递归效率高,只是递归优雅。
递归调用规则
每执行一个方法就会把这个方法压入内存中的虚拟栈中,这个栈比较小,栈装多了就栈溢出错误。方法执行完,这个方法就出栈。没出栈就说明方法还没执行完呗。
执行顺序,看图和代码说明,A(0)是最先执行完毕的,然后A(1)…….最后Main方法执行完毕
static void Main(string[] args)
{
A(10);
}
static void A(int n)
{
Console.WriteLine(n);
if(n!=0)
A(n - 1);
}
基线条件和递归条件
递归需要两个条件来完成
- 递归条件:方法自己调用自己,参数上会发生变化,根据上一步的结果,修改后进行下一步操作。如果自己调用自己,参数一样。有啥意义???
- 基线条件:终结递归,不准继续递归的条件,递归的出口