递归简介

递归指的是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
如果 一个函数在内部调用其本身,这个函数就是 递归函数
递归的好处是:只需少量的程序就可描述出解题过程所需要的多次重复计算
我们先来看看生活中递归的场景:

  1. 从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事。故事讲的是:
  2. 从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事。故事讲的是:
  3. 从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事。故事讲的是:
  4. 从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事…

递归求阶乘

递归最经典的案例是求n的阶乘
5的阶乘:5*4*3*2*1

  1. def func(n):
  2. '''
  3. 求n的阶乘
  4. :param n: 需要求的阶乘
  5. :return: n的阶乘
  6. '''
  7. if n==1:
  8. return 1
  9. else:
  10. return n*func(n-1)

分析:
如果传递的是1,则1的阶乘为1
如果传递的是大于1的数,n的阶乘就等于n乘以n-1的阶乘