马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
022函数:递归是神马
递归:在函数内部调用其他可见函数
口诀:递归递归,归去来兮,出来混总是要还的!
0. 表现形式:
1. 满足的基本条件:函数调用自身,设置正确的返回条件
2. 有没有必须使用递归的地方?
汉诺塔,目录索引,快速排序,树结构的定义。
3. 递归有危险性:非常消耗时间和内存,千万不能忘记返回
4. 优缺点:优点是证明逻辑能力。缺点是格式要求高,耗内存。
5. 不会拍
动动手代码:
1. func_oujilide.pydef gcd(x, y):
if y:
return gcd(y, x%y)
else:
return x
print(gcd(15, 10))
2. func_power.pydef 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))
|