开发者学堂课程【Python入门 2020年版:递归的基本使用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10338
递归的基本使用
内容介绍
一、递归函数的概念
二、递归函数的应用
一、递归函数的概念
def test():
print( 'test')
demo()
def demo() :
print( ' demo ' )
在一个函数里可以调用另一个函数,在一个函数里能否自己调用自己
def test():
print( 'test')
test()
1.递归简单来说,就是函数内部自己调用自己
def tell_story() :
print
('从前有座山')
print
('山上有个庙')
print
( '庙里有个老和尚')
print
( '还有一个小和尚')
print
( '老和尚在个小和尚讲故事')
print
('故事的内容是')
tell_story()
tell_story()
调用故事,就会一遍一遍的讲
运行结果:不断讲故事讲到系统崩,这是递归的深度。
2.递归最重要的是找到出口(停止的条件)
停止的条件特别多
①count =0
def tell_story() :
count +=1
print
('从前有座山')
print
('山上有个庙')
print
( '庙里有个老和尚')
print
( '还有一个小和尚')
print
( '老和尚在个小和尚讲故事')
print
('故事的内容是')
tell_story()
报错了,如何解决,加global count
count =0
def tell_story() :
global count
count +=1
print('
从
前有座山')
print
('山上有个庙')
print(
'庙里有个老和尚')
print
( '还有一个小和尚')
print
( '老和尚在个小和尚讲故事')
print
('故事的内容是')
if count <5:
tell_story
tell_story()
因为变量是一个全局变量,在函数内部,如果想用外部的全局变量,就要用global,运行结果:故事讲了5次。
二、递归函数的应用
#求1~n的和
Def get_sum(n):
Pass
注意:break 只能用于循环语句,不能用于递归
def get_sum(n):
return get_sum(n-1) + n
1 +2 + 3+4+5 + 6
= get_sum(5)+6
= get_sum(4)+5+6
前n项的和等于n加上n-1的和
Get_sum(6)=get_sum(5)+6
=get_sum(4)+5+6
= get_sum(3)+4+5+6
=get_sum(2)+3+4+5+6
getsum(1)+2+ 3
+4+ 5+ 6
get_sum(0)+1+2+ 3+4+5+6
get_sum(-1)
一直加下去就没有尽头了,不能让他一直延续下去,
If n==0
Return
这时将0传进来,你告诉我n=0,这时就不用递归了,直接告诉你这个结果=0
#求1 ~ n的和
def get_sum(n):
if n == 0:
return o
return n + get_sum(n - 1)
print(get_sum(6))
运行结果:21
先想代码如何写,然后想如何让他停下来。
如果写成
If == 6
:
Return 21
运行结果:21
print(get_sum(7) #7+21
注意:如果小于6就有问题了,小于6的和就求不到了,因为后面都是get_sum(n-1)
,小于6就死循环了,所以递归就需要思考好如何出去,如上题所示,大于等于6就都可以计算.
Get_sum(8)=8+get_sum(7)
=8+7+21
一般是一直计算,直到1停止计算。