鱼C论坛

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

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

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

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

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

x
022函数:递归是神马

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

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

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

动动手代码:
1. func_oujilide.py
def gcd(x, y):
    if y:
        return gcd(y, x%y)
    else:
        return x
    
print(gcd(15, 10))
2. func_power.py
def power(x, y):
    if y == 1:
        return x                                 # 乘最后一次
    else:                                         # 若y > 1
        return x * power(x, y-1)          # 递归

# a = int(input("请输入一个整数:")
# b = int(input("请再输入一个整数:")
a = 5
b = 4
result = power(a, b)
print("%d的%d次幂的值为%d" % (a, b, result))
3. jiecheng.py
# 递归实现阶乘factorial

# 非递归版本
def factorial1(x):
    temp = x
    for i in range(1, x):
        temp *= i
    return temp

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

num1 = int(input('Please give a number:'))
result1 = factorial2(num1)
print("%d的阶乘是:%d" % (num1, result1))


评分

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

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 15:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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