递归调用【乡村培育站暑期学习】

递归的概念:在定义一个函数或过程时,如果出现调用自身的成分,则称为递归。

递归的核心思想:先把规模较大的问题编程规模较小的问题,再把规模较小的问题又变成规模更小的问题…当问题小到一定程度的时候,可以直接得出它的解,从而得到原来问题的解,即采用“大事化小,小事化了”的基本思想。

递归算法的实现要点(条件):1.递归算法有明确的结束递归的边界条件(又称终止条件)以及结束时的边界值,可以通过条件语句(if语句)实现。2.函数在它的函数体内调用自身,并向着递归的边界条件发展。【简化记忆:结束条件和自己调用自己】

范例一:用递归函数求一个数的阶乘。

 1 #coding:utf-8
 2 def factorial(n):
 3     if n==1:
 4         return 1   #边界条件(结束条件)
 5     else:
 6         return n * factorial(n-1) #调用自身
 7 def main():
 8     print("5的阶乘:",factorial(5))
 9 if __name__ == "__main__": #判定程序执行名称
10     main()

执行结果:120

范例二:用递归函数实现累加和。

 1 #coding:utf-8
 2 def sum_m(n):
 3     if n == 1:
 4         return 1  #边界条件
 5     else:
 6         return n + sum_m(n-1) #自己调用自己
 7 def main():
 8     print("1+2+3+4+5=", sum_m(5))
 9 if __name__ == "__main__":
10     main()

执行结果:15

范例三:用辗转相除的方法两个数的最大公因数。

 1 #coding:utf-8
 2 def main():
 3     m = 18
 4     n = 24
 5     if m < n:
 6         n, m = m, n  # m和n变量值互换
 7     while (m % n != 0):
 8         t = m % n
 9         m = n
10         n = t
11     print("18和24的最大公因数:", n)
12 if __name__ == "__main__":
13     main()

执行结果:6

范例四:用递归函数实现求两个数的最大公因数(greatest common divisor )。

 1 #coding:utf-8
 2 def gcd_m(m, n):
 3     if m < n:
 4         n, m = m, n
 5     if m % n == 0:
 6         return n
 7     else:
 8         t = m % n
 9         m = n
10         n = t
11         return gcd_m(m, n)
12 def main():
13     print("8和12的最大公因数:", gcd_m(18, 24))
14 if __name__ == "__main__":
15     main()

执行结果:6

 

posted @ 2023-08-20 07:37  java帝国  阅读(14)  评论(0编辑  收藏  举报