关于递归,我有几句话想说

递归
递归的结束条件
问题本身可以拆分成更为简单的子问题,而子问题可以通过同样的方法解决。
问题需要有边界,否则会掉进递归死循环。
递归并不高效,大数量级的问题要慎用,你可能永远等不到答案。

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)
2
4
6
8
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)
2
4
6
8
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)
9
7
5
3
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)
9
7
5
3
1
>>>

总结:倒序打印中,递归结束条件不管放置哪里都不影响结果。SO,对于递归,我们一定要清楚结束条件是什么,什么时候调用本身
原文地址:https://www.cnblogs.com/hzyimen/p/12398962.html