鱼C论坛

 找回密码
 立即注册
查看: 2117|回复: 0

[技术交流] 《零基础入门学习Python》第22讲笔记

[复制链接]
发表于 2017-7-13 13:22:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
022函数:递归是神马

递归:在函数内部调用其他可见函数
口诀:递归递归,归去来兮,出来混总是要还的!

0.        表现形式:
1.        满足的基本条件:函数调用自身,设置正确的返回条件
2.        有没有必须使用递归的地方?
汉诺塔,目录索引,快速排序,树结构的定义。

3.        递归有危险性:非常消耗时间和内存,千万不能忘记返回
4.        优缺点:优点是证明逻辑能力。缺点是格式要求高,耗内存。
5.        不会拍

动动手代码:
1. func_oujilide.py
  1. def gcd(x, y):
  2.     if y:
  3.         return gcd(y, x%y)
  4.     else:
  5.         return x
  6.    
  7. print(gcd(15, 10))
复制代码

2. func_power.py
  1. def power(x, y):
  2.     if y == 1:
  3.         return x                                 # 乘最后一次
  4.     else:                                         # 若y > 1
  5.         return x * power(x, y-1)          # 递归

  6. # a = int(input("请输入一个整数:")
  7. # b = int(input("请再输入一个整数:")
  8. a = 5
  9. b = 4
  10. result = power(a, b)
  11. print("%d的%d次幂的值为%d" % (a, b, result))
复制代码

3. jiecheng.py
  1. # 递归实现阶乘factorial

  2. # 非递归版本
  3. def factorial1(x):
  4.     temp = x
  5.     for i in range(1, x):
  6.         temp *= i
  7.     return temp

  8. num = int(input('Please give a number:'))
  9. result = factorial1(num)
  10. print("%d的阶乘是:%d" % (num, result))
  11.         
  12. # 递归版本(有进去就有回来)
  13. def factorial2(n):
  14.     if n == 1:
  15.         return 1
  16.     else:
  17.         return n * factorial2(n-1)  # 调用

  18. num1 = int(input('Please give a number:'))
  19. result1 = factorial2(num1)
  20. print("%d的阶乘是:%d" % (num1, result1))
复制代码



评分

参与人数 2鱼币 +6 收起 理由
小甲鱼 + 4
康小泡 + 2

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-29 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表