马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 景命 于 2017-7-14 21:30 编辑
知识点:
我想告诉大家的是 熟能生巧。
设置默认的递归层数:
import sys
sys.setrecursionlimit() #参数为执行递归的层数
递归定义:
递归必须有调用函数自身的过程、必须有一个正确的返回条件。递归详细可以划分为递推和回推的过程。
递归阶乘的例子:def a(x):
if x == 0:
reutrn 1 #退出递归的条件。
else:
return x * a(x - 1) #在函数a()中调用函数a()自身。
i == int(input("请输入一个正整数:"))
a = a(i)
print("%d的阶乘是%d" % (i,a))
详细解释
递推过程:
请输入一个正整数:5 #运行程序后将5作为参数传递进函数。
a(5) -> #参数传递进函数后判断5是否等于0。
return 5 * a(5 - 1)-> #执行return后的语句,从新调用函数a(),将4作为参数传递进去。
a(4) -> #参数传递进函数后判断4是否等于0。
return 4 * a(4 - 1)-> #执行return后的语句,从新调用函数a(),将3作为参数传递进去。
a(3) -> #参数传递进函数后判断4是否等于0。
return 3 * a(3 - 1)-> #执行return后的语句,从新调用函数a(),将2作为参数传递进去。
a(2) -> #参数传递进函数后判断4是否等于0。
return 2 * a(2 - 1)-> #执行return后的语句,从新调用函数a(),将2作为参数传递进去。
a(1) -> #参数传递进函数后判断4是否等于0。
return 1 * a(1 - 1)-> #执行return后的语句,从新调用函数a(),将0作为参数传递进去。
a(0) -> #参数传递进函数后判断0是否等于0,结果为真,执行return 1
回推:
a(0) -> #返回值为1
a(1) = 1 * a(0) = 1 * 1 #a(1)的返回值为1
a(2) = 2 * a(1) = 2 * 1 #a(2)的返回值为2
a(3) = 3 * a(2) = 3 * 2 #a(3)的返回值为6
a(4) = 4 * a(3) = 4 * 6 #a(4)的返回值为24
a(5) = 5 * a(4) = 5 * 24 #a(1)的返回值为120
|