递归,在数学与计算机科学中,是指在方法的定义中使用方法自身。也就是说,递归算法是一种直接或者间接调用自身方 法的算法。 递归流程图如下:
举一个实际的例子:
计算5的递归,此时传入5然后进行判断,进入第二个选择语句计算54的递归的值,然后调用第二个fact方法(4),第一个fact方法等待,判断进入第二个选择语句执行4X3的递归,然后第二个fact方法等待…直到传入参数为1时执行11的递归计算结果为1,返回到前一个方法计算结果为2,…最后一次执行结果为5X24=120,至此返回最终结果。
可见递归很消耗内存,方法需要不断等待下一个执行完,容易造成栈溢出的情况。如果可以用循环代替递归,还是建议使用循环。