python递归

#函数体内按条件,调用自己

#递归相除
def sal(x):
    n = x / 2
    if n > 1:
        sal(n)
    print(n)

sal(1000)

# 斐波那契数
def fun1(a, b, lis=[]):
    if a < 50:
        lis.append(a)
        fun1(b, a + b)
    if a == 0:  # 第一层的时候才返回结果,其它层则不执行
        return lis
print(fun1(0, 1))

# 递归相加,从1递归加到指定值
sum = 0
def fun2(num):
    global sum
    sum += num
    if num > 0:
        num -= 1
        fun2(num)
fun2(10)
print(sum)

  

时间: 2024-08-06 10:36:51

python递归的相关文章

汉诺塔问题的Python递归实现

汉诺塔问题的python递归实现 学习python遇到的第一个问题:汉诺塔问题的实现.首先是不知道什么是汉诺塔问题,然后是不知道怎么实现.于是百度了下,结果如下: 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘 def hanoi(n,x,y,z): i

Python递归报错:RuntimeError: maximum recursion depth exceeded in comparison

Python中默认的最大递归深度是989,当尝试递归第990时便出现递归深度超限的错误: RuntimeError: maximum recursion depth exceeded in comparison 简单方法是使用阶乘重现: 1 #! /usr/bin/env Python 2 3 def factorial(n): 4 5 if n == 0 or n == 1: 6 7 return 1 8 9 else: 10 11 return(n * factorial(n - 1)) >

Python递归遍历目录下所有文件

#自定义函数: import ospath="D:\\Temp_del\\a" def gci (path): parents = os.listdir(path) for parent in parents: child = os.path.join(path,parent) #print(child) if os.path.isdir(child): gci(child) # print(child) else: print(child) gci(path) #使用os.walk方

Python递归实现汉诺塔

Python递归实现汉诺塔: def f3(n,x,y,z): if(n==1): print(x,'--->',z) else: f3(n-1,x,z,y) print(x,'--->',z) f3(n-1,y,x,z) n=int(input('请输入汉罗塔层数:')) f3(n,'X','Y','Z') 运行结果如下:

Python递归及斐波那契数列

递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理.于是,fact(n)用递归的方式写出来就是: def fact(

Python递归中 return 代码陷阱

最近写接口测试程序中,需要查询多层嵌套字典中某个Key的值,查到则返回,查不到返回None,查询的Key可以是任意层次的Key,如 Value本身也是多层字典,或者Key已经是叶子结点. 思想:利用Python的递归思想,逐层深入遍历,最后返回结果值 最终的成品代码参考了一下博客内容: http://www.cnblogs.com/hahaweixiaohenqingcheng/archive/2016/11/14/6062961.html#undefined 尝试多次后发现参考代码已经无法再深

用python递归实现组合,以及关于递归的个人感想

上代码先: def fib(nlist,res): print_list = [] print_list.extend(res) print_list.append(nlist if not nlist else nlist[0]) if len(nlist)==1: print '#############print_list',print_list return temp_list = [] temp_list.extend(nlist) for i in range(len(temp_li

Python递归和迭代

递归 在函数内部,程序调用自身的编程技巧称为递归( recursion).递归函数结构清晰,很直观的理解计算过程,但也有严重缺点:相对于普通循环而言,递归运行效率较低,经过很多冗余的计算,递归会消耗大量的调用堆栈.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧.每当函数返回,栈就会减一层栈帧.由于栈的大小不是无限的,因此,递归调用的次数过多,会导致栈溢出.因此,应该尽量用循环代替递归.在递归调用的过程当中系统为每一层的返回点.局部量等开辟了栈

python递归次数和堆栈溢出问题

在做递归的时候,测试了一下python的递归能力. 如果不设置递归次数的话,大概只能在992次左右,就会出现错误:RuntimeError: maximum recursion depth exceeded 如果使用代码: import sys sys.setrecursionlimit(1000000) #例如这里设置为一百万 设置了递归次数,到了9656次就会出现stack overflow的问题.查了一下,如果换成64位的python会好点.但是做递归容易引起溢出这个问题还是听蛋疼的,数据

16 Python 递归例题

递归 1.什么是递归 recursion 递归 - 递归的定义--在一个函数里再调用这个函数本身 在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归. 递归的最大深度--997 一个函数在内部调用自己 递归的层数在python里是有限制的 997/998层 2.层数可以修改 sys模块 1 import sys #python限制在997/998 2 sys.setrecursionlimit(10000000) #可以修改 3 COUNT = 0 4 def func(): #