递归是解决问题的一种方式,它和循环很像 它的整体思想是,将一个大问题分解为一个个的小问题,直到问题无法分解时,再去解决问题 递归式函数的两个要件 1.基线条件 - 问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了 2.递归条件 - 将问题继续分解的条件 递归和循环类似,基本是可以互相代替的, 循环编写起来比较容易,阅读起来稍难 递归编写起来难,但是方便阅读 递归式的函数 从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么故事呢? 从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么故事呢?.... 递归简单理解就是自己去引用自己! 递归式函数,在函数中自己调用自己! 尝试求10的阶乘(10!) 1! = 1 2! = 1*2 = 2 3! = 1*2*3 = 6 4! = 1*2*3*4 = 24...... 一般代码 #创建一个变量保存结果 n = 10 for i in range(1,10): n *= i print(n)
求n的阶乘 # 创建一个函数,可以用来求任意数的阶乘 def factorial(n): ''' 该函数用来求任意数的阶乘 参数: n 要求阶乘的数字 ''' # 创建一个变量,来保存结果 result = n for i in range(1,n): result *= i return result
#递归方法 def factorial(n): ''' 该函数用来求任意数的阶乘 参数: n 要求阶乘的数字 ''' # 基线条件 判断n是否为1,如果为1则此时不能再继续递归 if n == 1 : # 1的阶乘就是1,直接返回1 return 1 # 递归条件 return n * factorial(n-1)