递归
1、递归的结束条件
问题本身可以拆分成更为简单的子问题,而子问题可以通过同样的方法解决。
问题需要有边界,否则会掉进递归死循环。
递归并不高效,大数量级的问题要慎用,你可能永远等不到答案。
1.利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
def read_char(string,length):
if length==0:#这里一定要校验,不然会报错
return
print(string[length-1])
read_char(string,length-1)
string=input("请输入字符串:")
read_char(string,len(string))
2.递归实现:吓得我抱起了抱着抱着抱着我的小鲤鱼的我的我的我
function Recursion(dept):
("抱着")
if dept:
return "我的小鲤鱼"
else:
Recursion(dept)
print("的我")
print("吓得我抱起了")
Recursion(2)
3.递归升序打印1-10
方法一:
def func(n):
if n>=1:
func(n-1)
print(n)
func(10)
执行结果:
>>> def func(n):
... if n>=1:
... func(n-1)
... print(n)
...
...
>>> func(10)
1
2
3
4
5
6
7
8
9
10
>>>
方法二
def func(n):
func(n-1)
print(n)
if n<1:
return
def func(n):
if n<1:
return
func(n-1)
print(n)
方法二总结:递归结束条件在前面与后面都可以实现递归同样的结果
func(10)
执行结果:
>>> def func(n):
... if n<1:
... return
... func(n-1)
... print(n)
...
>>>
>>> func(10)
1
2
3
4
5
6
7
8
9
10
4.递归倒序打印1-10
方法一:
def func(n):
if n>=1:
print(n)
func(n-1)
func(10)
>>> def func(n):
... if n>=1:
... print(n)
... func(n-1)
...
...
...
...
>>> func(10)
10
9
8
7
6
5
4
3
2
1
>>>
方法二:
def func(n):
if n<1:
return
print(n)
func(n-1)
func(10)
>>> def func(n):
... if n<1:
... return
... print(n)
... func(n-1)
...
...
>>> func(10)
10
9
8
7
6
5
4
3
2
1
>>>
总结:倒序打印中,递归结束条件不管放置哪里都不影响结果。SO,对于递归,我们一定要清楚结束条件是什么,什么时候调用本身