python中递归函数

递归函数即直接或间接地调用自身以进行循环的函数

def mySum(L):
    if not L:
        return 0
    else:
        return L[0]+mySum(L[1:])

print mySum([1,2,3,4,5])

这个函数用递归的方法计算列表所有元素的和

在每一层,函数都递归的调用自己来计算列表剩余的值的和。

还有一个递归方法计算阶乘:

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

print (factorial(5))
120

递归函数也可以用于计算Fibonacci数列

def recur_fibo(n):
   """递归函数
   输出斐波那契数列"""
   if n <= 1:
       return n   
   else:
       return(recur_fibo(n-1) + recur_fibo(n-2))

有一个问题跟fibonacci数列很像, 只是初始的两个数情况不同

假设一个楼梯有 N 阶台阶,人每次最多可以跨 2 阶,求总共的爬楼梯方案数,用递归实现如下:

def DP(n):
    
    if n <= 2:
        return n
    else:
        return DP(n-1) + DP(n-2)

print DP(5)

递归就介绍到这里。

时间: 2024-10-17 21:49:36

python中递归函数的相关文章

python入门五(函数)【5-2 python中递归函数】

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

python中的关键字---4(匿名/递归函数)

匿名函数 # 匿名函数 别称 : lambda表达式# 函数,没有名字# def wahaha(n):# return n**2# print(wahaha.__name__) # qqxing = lambda n : n**2# print(qqxing.__name__)# ret = qqxing(8)# print(ret) # f = lambda *args:sum(args)# ret = f(1,2,3,4,5)# print(ret) # 写匿名函数 : 接收两个参数,返回较

简单介绍下python中函数的基础语法

python 函数 定义 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 特性 减少代码重复 使程序变得可扩展 使程序变得易于维护 函数的创建 python中创建函数,需要使用__def__关键字,后面写函数的名字,然后是形参列表,大体如下: def 函数名(形参列表): 函数体...... return 返回值 其中形参列表和 return返回值并不是必须的. 函数的使用 想要调用函数程序,需要以函数名加括号的形式进行调用,而括号内可以传入参数

what&#39; the python之递归函数与二分算法

what's the 递归? 递归函数的定义:在函数里可以再调用函数,如果这个调用的函数是函数本身,那么就形成了一个递归函数. 递归的最大深度为997,这个是程序强制定义的,997完全可以满足一般情况下用到递归的情形. #最大997层 def foo(n): print(n) n += 1 foo(n) foo(1) 举个栗子,假设你想知道A的年龄,但你只知道A比B大2岁,B又比C大两岁,C又比D大两岁,D比E大两岁,恰好你知道E的岁数,那是不是就能知道A的岁数了呢,这就可以组成一个递归.那我们

走入计算机的第四十天(python中sockserver模块)

一.Python中的sockserver模块 1.该模块与sock模块不同之处是该模块自动帮我们分装好了一些功能,让我们在编程的时候直接调用这些功能就可以了,节省了编程步骤. 2.如图所示 注释:上图为服务端设置 该模块的操作方法比较死板,我们只要会熟悉的使用他就可以了.

python中if __name__ == &#39;__main__&#39;:

Using a module's __name__ Example? 8.2.? Using a module's __name__ #!/usr/bin/python # Filename: using_name.py if __name__ == '__main__': print 'This program is being run by itself' else: print 'I am being imported from another module' Output $ pytho

关于Python中的yield

关于Python中的yield http://www.cnblogs.com/tqsummer/archive/2010/12/27/1917927.html http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ 一.迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议

python中的那些“神器”

"武林至尊,宝刀屠龙,号令天下,莫敢不从,倚天不出,谁与争锋",这是神器.不过今天要说的python中的"神器"就没有这么厉害了,这里要说的"神器"其实就是名称里面带了个"器"的,如下: 列表解析器 迭代器 生成器 装饰器 列表解析器 现在遇到了这样一个问题需要解决:"有一个数字的列表,要求对该列表中的奇数乘以2,返回处理完成后的列表(不改变原来列表的顺序,仅对列表中的奇数乘以2)",比较传统的方法可能会是

Python中字符串格式化如何实现?

Python开发中字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator. 1.百分号方式 %[(na