递归和字典

作者: 大师的学徒 | 来源:发表于2020-03-16 17:26 被阅读0次
#iterarion
def factorial_iter(n):
    prod = 1
    for i in range(1, n+1):
        prod *= i
        return prod

#recursion
def factorial(n):
    if n == 1:
        return 1
    else:
        return n * facturial(n-1)

#从程序员的角度上,递归更简洁,因为不需要定义内置变量。而从计算机角度,迭代效率更高。
#另一个列子,把乘法用加法的形式体现

def mult_iter(a, b):
    result = 0
    while b > 0:
        result += a
        b -= 1
    resurn result

def mult(a, b):
    if b == 1:
        return a
    else:
        return a + mult(a, b-1)

#递归方式解决斐波那契数列
    
def fib(n):
    if n == 0 or n == 1:
        return 1
    else:
        return fib(n - 1) + fib(n - 2)

#用字典高效解决斐波那契数列的递归运算量问题,避免因递归造成的数值重复计算,

def fib_efficient(n):
    d = {0:1, 1:1}
    if n in d:
        return d[n]
    else:
        return fib(n-1) + fib(n-2)

print(fib_efficient(10))

#递归方式解决回文问题

def isPalindrome(s):
    def toChars(s):
        s = s.lower()#将字符串转化为小写字母
        ans = ""
        for char in s:
            if char in "abcdefghigklmnopqrstuvwxyz":
                ans += char #将字符中的字母抽离出来
        return ans

    def isPal(s):
        if len(s) == 1:
            return True
        else:
            return s[0] == s[-1] and isPal(s[1:-1]) #将s[1:-1]作为新的参数输入isPal()函数

    return isPal(toChars(s)) #调用isPal()函数来处理经过toChars()输出的文字

总结,递归就是把一个大问题,转化为比他小一点的问题,然后再转化为比他小一点的问题的小一点的问题,最终小到一个已知的答案,这个答案也是递归停止的条件。

相关文章

  • 递归和字典

    总结,递归就是把一个大问题,转化为比他小一点的问题,然后再转化为比他小一点的问题的小一点的问题,最终小到一个已知的...

  • 递归,字典和键笔记

    有一对兔子一个月之后每个月生一对兔子 n年后会有多少对兔子(斐波那契数列) def fun(n): if n...

  • 全排列&下一个字典序&上一个字典序问题(C++)

    1、用递归(DFS)和非递归两种方式输出一个序列的全排列;2、找到当前序列的下一个和上一个字典序。 全排列和字典序...

  • 递归——数组全排列

    方法一 深度 方法二 字典序递归

  • 十一, 函数参数和返回值进阶

    函数参数和返回值进阶 元素、字典拆包(知道) 2.递归 10)]

  • Postgresql实现递归查询字典并转JSON

    现在有一张字典表,有二级 、三级字典项,需要递归查询并转换成JSON对象。字典数据情况如下: 查询语句如下: 查询...

  • Python基础知识详解

    函数可变参数 函数关键字参数 命名关键字参数 递归函数 尾递归函数优化 切片 迭代 列表迭代:字典迭代: 在这里小...

  • 列表字典结构转字典

    假设有如下结构需要转换成字典 : 可以采用递归形式的函数: out:

  • 提供一个model转字典的方法

    因项目中需要,实现了一个模型转换字典的方法,支持递归处理。方便快速将模型转换为字典或将属性转化为json,与jav...

  • 全排列

    递归不支持字典序,只支持全排列 1. 不含重复元素的全排列 2. 含重复元素 非递归处理 支持处理重复元素(不包含...

网友评论

    本文标题:递归和字典

    本文链接:https://www.haomeiwen.com/subject/udpnehtx.html