zoukankan      html  css  js  c++  java
  • python递归(函数)

    递归:一个过程或函数调用自身的一种方法。

    1. 效果图

    2. 代码

    def factorial(n):
        '''
            该函数用来求任意数的阶乘
    
            参数:
                n 要求阶乘的数字
        '''
        # 基线条件 判断n是否为1,如果为1则此时不能再继续递归
        if n == 1 :
            # 1的阶乘就是1,直接返回1
            return 1
    
        # 递归条件    
        return n * factorial(n-1)
    
    print(factorial(5))

    原笔记:

    # 递归是解决问题的一种方式,它和循环很像
    #   它的整体思想是,将一个大问题分解为一个个的小问题,直到问题无法分解时,再去解决问题
    # 递归式函数的两个要件
    #   1.基线条件
    #       - 问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了
    #   2.递归条件
    #       - 将问题继续分解的条件
    # 递归和循环类似,基本是可以互相代替的,
    #   循环编写起来比较容易,阅读起来稍难
    #   递归编写起来难,但是方便阅读
    
    
    # 练习
    #   创建一个函数 power 来为任意数字做幂运算 n ** i
    #   10 ** 5 = 10 * 10 ** 4
    #   10 ** 4 = 10 * 10 ** 3
    #   ...
    #   10 ** 1 = 10
    def power(n , i):
        '''
            power()用来为任意的数字做幂运算
    
            参数:
                n 要做幂运算的数字
                i 做幂运算的次数
        '''
        # 基线条件
        if i == 1:
            # 求1次幂
            return n
        # 递归条件
        return n * power(n , i-1)
    
    # print(power(8,6))    
    
    
    
    #   
    # 练习
    #   创建一个函数,用来检查一个任意的字符串是否是回文字符串,如果是返回True,否则返回False
    #   回文字符串,字符串从前往后念和从后往前念是一样的
    #       abcba
    #   abcdefgfedcba
    #   先检查第一个字符和最后一个字符是否一致,如果不一致则不是回文字符串
    #       如果一致,则看剩余的部分是否是回文字符串
    #   检查 abcdefgfedcba 是不是回文
    #   检查 bcdefgfedcb 是不是回文
    #   检查 cdefgfedc 是不是回文
    #   检查 defgfed 是不是回文
    #   检查 efgfe 是不是回文
    #   检查 fgf 是不是回文
    #   检查 g 是不是回文
    
    def hui_wen(s):
        '''
            该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False
    
            参数:
                s:就是要检查的字符串
        '''
        # 基线条件
        if len(s) < 2 :
            # 字符串的长度小于2,则字符串一定是回文
            return True
        elif s[0] != s[-1]:
            # 第一个字符和最后一个字符不相等,不是回文字符串
            return False    
        # 递归条件    
        return hui_wen(s[1:-1])
    
    # def hui_wen(s):
    #     '''
    #         该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False
    
    #         参数:
    #             s:就是要检查的字符串
    #     '''
    #     # 基线条件
    #     if len(s) < 2 :
    #         # 字符串的长度小于2,则字符串一定是回文
    #         return True
    #     # 递归条件    
    #     return s[0] == s[-1] and hui_wen(s[1:-1])
    
    print(hui_wen('abcdefgfedcba'))
  • 相关阅读:
    SQL 2008R2问题:用户、组或角色'XXX'在当前数据库中已存在?
    修改sqlserver 2008 R2 实例名称
    keepalived vip做网关
    Django(HttpResponse、render,、redirect)的用法
    Linux脚本中$#、$0、$1、$@、$*、$$、$?
    linux定时删除历史日志文件实现方式--shell脚本
    Long转换为date
    java.lang.ClassNotFoundException: org.springframework.web.util.IntrospectorCleanupListener
    2016年新年伊始
    linux下环境搭建
  • 原文地址:https://www.cnblogs.com/FlyingLiao/p/11279913.html
Copyright © 2011-2022 走看看