zoukankan      html  css  js  c++  java
  • 关于递归,我有几句话想说

    递归
    递归的结束条件
    问题本身可以拆分成更为简单的子问题,而子问题可以通过同样的方法解决。
    问题需要有边界,否则会掉进递归死循环。
    递归并不高效,大数量级的问题要慎用,你可能永远等不到答案。
    
    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,对于递归,我们一定要清楚结束条件是什么,什么时候调用本身
  • 相关阅读:
    osg 自定义图元
    osg model
    Qt 获取键盘输入
    TensorFlow Object Detection API —— 测试自己的模型
    labelimg data
    Qt 自定义信号SIGNAL
    qt ui
    QPixmap QImage 相互转化
    QString std::string 相互转 含中文
    ubuntu 安装百度云客户端
  • 原文地址:https://www.cnblogs.com/hzyimen/p/12398962.html
Copyright © 2011-2022 走看看