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'))
  • 相关阅读:
    JS站点
    1011 World Cup Betting (20分)
    1007 Maximum Subsequence Sum (25分)(动态规划DP)
    1006 Sign In and Sign Out (25分)
    1005 Spell It Right (20分)
    1004 Counting Leaves (30分)(DFS)
    1003 Emergency (25分)(Dijkstra算法)
    1002 A+B for Polynomials (25分)
    1001 A+B Format (20分)
    canvas
  • 原文地址:https://www.cnblogs.com/FlyingLiao/p/11279913.html
Copyright © 2011-2022 走看看