函数的递归
函数递归
-
必须有一个明确的结束条件
-
每次进入更深层次时,问题规模相比上次递归应有所减小
-
递归效率不高
eg:
def calc(n):
print(n)
if int(n / 2) == 0:
return n
res=calc(int(n / 2))
return res
calc(10)
print(res)
分析:
1.执行calc(10)
def calc(10):
print(10) #打印10
if int(10 / 2) == 0: #判断10除以2取整是否为0
return n
res=calc(int(10 / 2)) #执行calc(5)并把结果赋值给res
return res #等待返回值res(calc(5)的值)
*****************************************************************************
2.执行calc(5)
def calc(5):
print(5) #打印5
if int(5 / 2) == 0 #判断5除以2取整是否为0
return n
res=calc(int(5 / 2)) #执行calc(2)并把结果赋值给res
return res #等待返回值res(calc(2)的值)
****************************************************************************
3.执行calc(2)
def calc(2):
print(2) #打印2
if int(2 / 2) == 0 #判断2除以2取整是否为0
return n
res=calc(int(2 / 2)) #执行calc(1)并把结果赋值给res
return res #等待返回值res(calc(1)的值)
****************************************************************************
4.执行calc(1)
def calc(1):
print(1) #打印1
if int(1 / 2) == 0: #判断1除以2取整是否为0
return 1 #条件成立返回1,则calc(1)等于1
res=calc(int(n / 2))
return res
将calc(1)=1返回给calc(2)的res,将calc(2)=1返回给calc(5),将calc(5)=1的值返回给calc(10)
也就是执行最后一步return res.
第一次在博客园用markdown,感觉真的很难用
返回顶部
喜欢开源,乐于分享,请多指教