zoukankan      html  css  js  c++  java
  • Python----递归函数

    # 兔子问题:
    # 1 1 2 3 5 7 12
    # 第一天1只兔子 第二天1只兔子   第三天2只兔子   第四天3只兔子   后面每天的兔子数等于前2天的兔子数之和
    
    # 定义函数,计算第n天的兔子数
    def rabbit(n):
        # 递归结束的条件:n=2
        # 第一天和第二天兔子数都是1
        if n == 1 or n == 2:
            return 1
        # 之后的兔子数等于前2天的数量
        else:
            return rabbit(n - 1) + rabbit(n - 2)
    
    
    # 定义函数,计算1-100的和
    # 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
    # 普通递归
    def he(n):
        if n == 1:
            return 1
        return n + he(n - 1)
    
    # 优化后的:尾递归
    def he_1(n, total=1):
        if n == 1:
            return total
        else:
            return he_1(n - 1, total=total + n)
    
    
    if __name__ == '__main__':
        # 递归函数: 在自己的函数里面调用自己
        # 一般的使用递归函数的话,都是找数学关系,然后进行递归
        print(rabbit(20))
        print('练习一:', he(100), he_1(100))
  • 相关阅读:
    codevs1288 埃及分数
    codevs1792 分解质因数
    dp
    JAVA大数贪心
    求最长不重叠子串
    初识后缀数组
    dp
    两数相除,判断小数位是否有限位
    构造二分图匹配
    建立多个树状数组
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/14726129.html
Copyright © 2011-2022 走看看