Python3 的递归

1、递归的条件:

1、有调用函数自身

2、设置正确的返回条件

2、斐波那契数列的实现

#递归方法,分治思想
def fibonacci(n):
    if n<1:
        print("输入有误")
        return -1
    if n==1 or n==2:
        return 1
    else:
        return fibonacci(n-1)+fibonacci(n-2)
#迭代方法
def fibonacci1(n):
    f1=1
    f2=1
    if n<1:
        print("输入有误")
        return -1
    for i in range(1,n+1):
        if i==1 or i==2:
            result=1
        else:
            result=f1+f2
            f1=f2
            f2=result
    print(result) 

3、pow()函数的递归实现

def power(x,y):
    ‘递归形式‘
    if y==0:
        return 1
    else:
        return x*power(x,y-1)

def power1(x,y):
    ‘非递归形式‘
    result=1
    while y:
        result*=x
        y-=1
    print(result)
    

4、递归方式求最大公约数

def gcd(x,y):

    if x%y ==0:
        print(y)
    else:
        #x=y
        #y=r
        gcd(y,x%y)

5、汉诺塔

def hannoi(n,x,y,z):
    if n ==1:
        print(x,‘--->‘,y)
    else:
        hannoi(n-1,x,z,y)#先将N-1层从x移到y上
        print(x,‘--->‘,z)#再将第n层从x移到z上
        hannoi(n-1,y,x,z)#再将N-1层从y移到z上

6、十进制转二进制递归实现

def ddbin2(x):
    result=‘‘
    if x:
        result=ddbin2(x//2)
        return result+str(x%2)
    else:
        return result
print(ddbin2(2))

7、回文联递归实现

def hui(x):
    lens=len(x)
    for i in range(lens):
        if x[i]==x[lens-i-1]:
            if i==lens//2:
                print("是回联文")
        else:
            print("no!!")
            return 0
#hui("上海自来水来自海上")
#hui("12231")

def hui2(x):
    i=0
    lens=len(x)
    if x[0] ==x[lens-1]:
        i=i+1
        y=x[i:lens-i]
        print(x[i:lens-i])
        if len(y)==1 or len(y)==2:
            print("是回文联")
            return 1
        hui2(y)
    else:
        print("不是回文联")
        return 0

hui2("上海自来水来自海上")
hui2("楼望海海望楼")
hui2("jhkhkkhh")
def is_palindrome(n, start, end):
        if start > end:
                return 1
        else:
                return is_palindrome(n, start+1, end-1) if n[start] == n[end] else 0

string = input(‘请输入一串字符串:‘)
length = len(string)-1

if is_palindrome(string, 0, length):
        print(‘\"%s\"是回文字符串!‘ % string)
else:
        print(‘\"%s\"不是回文字符串!‘ % string)

原文地址:https://www.cnblogs.com/PythonFCG/p/8371807.html

时间: 2024-10-09 21:50:07

Python3 的递归的相关文章

Python3基础——递归

递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归函数的优点是定义简单,逻辑清晰.理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰. 使用递归函数需要注意防止栈溢出.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧.由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出.python3默 认递归的深度是100,如果想要更改递归深度,可以导入sys模块,设置递归深度最

python3之递归

1.递归的特点 递归算法是一种直接或间接调用自身算法的过程,在计算机编程中,递归算法对解决一大类问题是十分,它往往使算法的描述简洁而且易于理解. 递归算法解决问题的特点: (1)递归就是在过程或函数里调用自身 (2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口. (3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低,所以一般不提倡用递归算法设计程序. (4)在递归调用的过程中系统为每一层的返回点.局部量等开辟了栈来存储,递归次数过多容易造成栈溢出等. 2.递归的要求 递

Python3:递归实现输出目录下所有的文件

今天来整理一下os库中方法的使用,如何输出一个目录下的所有文件? 1.首先介绍几个基本的的方法: 1)os.getcwd()  #返回当前工作目录 2)os.listdir()    #返回一个列表,包含当前工作目录下的文件和路径 3)os.path.join(path,*paths) 路径拼接 4)os.path.isfile(path)  判断是不是文件,返回布尔值 2.如何输出所有的文件路径呢?代码: def allfile(basepath): for item in os.listdi

day3-函数,递归,内置函数

day3-函数,递归,内置函数 作者:矮哥 归档:学习笔记 2017/01/28 1.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method. 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个

Python-函数的递归调用

递归调用顾名思义即在函数内部调用函数(自己调用自己),通常用它来计算阶乘,累加等 注意: - 必须有最后的默认结果 if n ==0,(不能一直调用自己,如果没有可能会造成死循环) - 递归参数必须向默认的结果收敛 func(n-1) 例子1:计算5的阶乘 #!/usr/bin/env python def func(n): if n == 0: return 1 else: return n * func(n-1) print func(5) 例子2:计算1到100的和 #!/usr/bin/

python学习之函数(四)--递归

1.什么是递归:递归比迭代高级: 在递归函数中调用自己,如下,会陷入死循环: def recursion(): return recursion()小知识:python3的递归层深是100层,可以更改递归层深import syssys.setrecursionlimit(10000) 用非递归方式实现阶乘: def factorail(n): result = n for i in range(1,n): result *= i return resultprint (factorail(5))

PYTHON_DAY_05

目录 一.匿名函数 (lambda()) 二.内置函数 (map().filter().reduce().zip().sorted()) 三.yield关键字的另外一种用法 四.递归调用 五.正则表达式 re模块 六.模块与包 一.匿名函数(lambda) 1.当传入函数时,有些时候不需要显示的定义函数,直接传入匿名函数更方便 2.匿名函数提供了有限支持,以map()为例,计算f(x)=x2时,除了定义一个f(x),还可以直接传入匿名函数: >>> map(lambda x: x*x ,

Python 第二天

lambda表达式:lambda 参数:表达式 为什么要用lambda:1.省去函数的定义过程:2抽象且被调用次数少:3增强可读性 内建函数:filter(过滤).map(筛选) filter(None,[]):过滤[]中的非真值 filter(函数名,[]):按函数方法过滤[] map用法与filter类似 递归:调用自己:有结束条件 Python2的递归深度为1000左右,Python3的递归深度为1000000左右 字典:{key,value}或dict(key=value)

Head First Python(初识Python)

使用IDLE来帮助学习Python Python程序员通常把内置函数称为BIF,print() BIF的作用是吧消息显示到标准输出(通常是屏幕) 1 print("You can experiment with code within IDEL's shell Coool, eh?") 2 if 43>42 3 print("Don't panic!") Python要求代码快缩进.** 有效地使用IDEL TAB完成:自动完成语句 回退代码语句:Win/Li