递归(python)

# -*- coding: utf-8 -*-

def fact(n):
    if n == 0:
        return 1
    else:
        return n * fact(n - 1)

def print_num(n):
    for i in range(1, n + 1):    #
        print(i)

def print_num_recursive(n):
    if n > 0:
        print_num_recursive(n - 1)
        print(n)

def print_num_recursive_revserve(n):
    if n > 0:
        print(n)
        print_num_recursive_revserve(n - 1)

from collections import deque

class Stack(object):
    def __init__(self):
        self._deque = deque()

    def push(self, value):
        return self._deque.append(value)

    def pop(self):
        return self._deque.pop()

    def is_empty(self):
        return len(self._deque) == 0

def print_num_use_stack(n):
    s = Stack()
    while n > 0:    # 不断将参数入栈
        s.push(n)
        n -= 1

    while not s.is_empty():    # 参数弹出
        print(s.pop())

def hanoi_move(n, source, dest, intermediate):
    if n >= 1:  # 递归出口,只剩一个盘子
        hanoi_move(n - 1, source, intermediate, dest)
        print("Move %s -> %s" % (source, dest))
        hanoi_move(n - 1, intermediate, dest, source)

def flatten(rec_list):
    for i in rec_list:
        if isinstance(i, list):
            for i in flatten(i):
                yield i
        else:
            yield i

def test_flatten():
    assert list(flatten([[[1], 2, 3], [1, 2, 3]])) == [1, 2, 3, 1, 2, 3]

原文地址:https://www.cnblogs.com/muzinan110/p/11166967.html

时间: 2024-10-22 05:40:02

递归(python)的相关文章

python 内置&&递归

lambda 优点: 1:可以简单使用一个脚本来替代我们的函数 2:不用考虑命名的问题 3:简化代码的可读性,不用跳转到def了,省去这样的步骤 内置函数:bif filter:过滤器 map:映射  1 >>> lambda x: 2*x+1 2 <function <lambda> at 0x00000000026C6AC8> 3 >>> g=lambda x: 2*x+1 4 >>> g(3) 5 7 6 >>

python匿名函数和递归

lambda 匿名函数: 为了解决一些简单的需求而设计的一句话函数 lambda函数不需要def来声明,一句话就可以声明出一个函数 语法: 函数名 = lambda 参数: 返回值 需要注意的是: 1. 函数的参数可以有多个,多个参数之间用逗号隔开 2. 匿名函数不管多复杂,只能写一行,切逻辑结束后直接返回数据 2.返回值和正常的函数一样,可以是任意数据类型 匿名函数并不是说一定没有名字,这里前面的变量就是一个函数名,说他是匿名   原因是我们通过__name__查看的时候是没有名字的,统一叫l

广东海洋大学 电子1151 孔yanfei python语言程序设计 第八周

六.包与模块 1.模块module Python中每一个.py脚本定义一个模块,所以我们可以在一个.py脚本中定义一个实现某个功能的函数或者脚本,这样其他的.py脚本就可以调用这个模块了.调用的方式有三种,如下: [python] view plain copy 在CODE上查看代码片派生到我的代码片 ################################### ## package and module #### ## a .py file define a module which

Python全栈

Linux 常用命令 Python全栈开发之1.输入输出与流程控制 Python全栈开发之2.运算符与基本数据结构 Python之实现一个简易计算器 Python之socketserver源码分析 Python全栈开发之3.数据类型set补充.深浅拷贝与函数 Python全栈开发之4.内置函数.文件操作和递归 Python全栈开发之5.几种常见的排序算法以及collections模块提供的数据结构 Python全栈开发之6.正则表达式 Python全栈开发之7.模块和几种常见模块以及format

第二周 day3 python学习笔记

1.字符串str类型,不支持修改. 2.关于集合的学习: (1)将列表转成集合set:集合(set)是无序的,集合中不会出现重复元素--互不相同 (2)集合的操作:交集,并集.差集.对称差集.父集.子集.增加.删除.求长度,但是不允许修改 3.文件操作 (1)对文件操作的流程: >>1.打开文件,得到文件句柄并赋值给一个变量 >>2.通过句柄对文件进行操作 >>3.关闭文件 #文件操作f=open("B:/Python/PycharmCode/pyDay2/t

Python全栈开发之目录

基础篇 Python全栈开发之1.输入输出与流程控制 Python全栈开发之2.运算符与基本数据结构 Python全栈开发之3.数据类型set补充.深浅拷贝与函数 Python全栈开发之4.内置函数.文件操作和递归 Python全栈开发之5.几种常见的排序算法以及collections模块提供的数据结构 Python全栈开发之6.正则表达式 Python全栈开发之7.模块和几种常见模块以及format知识补充 Python全栈开发之8.装饰器详解 Python全栈开发之9.面向对象.元类以及单例

day5-python之递归与二分法

一.递归的定义 递归调用是函数嵌套调用的一种特殊形式,函数在调用时,直接或间接调用了自身,就是递归调用 二.递归分为两个阶段:递推,回溯 age(5) = age(4) + 2 age(4) = age(3) + 2 age(3) = age(2) + 2 age(2) = age(1) + 2 age(1) = 18 age(n)=age(n-1)+2 #n>1 age(1)=18 #n=1 ##########################3 def age(n): if n == 1:

三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

一 三元表达式.列表推导式.生成器表达式 1.三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推导式 #1.示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)] #2.语法 [expression for item1 in iterabl

Python文件操作与函数目录

文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 Python函数——命名空间与闭包 Python函数——闭包延迟绑定 Python函数——装饰器 Python函数-列表推导式.生成器与迭代器 练习题 Python文件与函数练习题 案例 python函数练习——个人信息修改 Python函数案例——员工信息管理 原文地址:https://www.c