标签:
在函数内部,可以调用其他函数,如果一个函数在内部调用本身,这个函数就是递归函数
1.递归的基本原理:
举例:
>>> def fun2(i): ... r = fun2(i+1) ... return r
递归函数中没有包含终止递归调用的语句,此函数将一直返回循环执行下去,加终止条件当满足条件时会结束函数
def fun(i): print(i) if i == 5: return 5 r = fun(i + 1) return r fun(1)
举例:
阶乘,计算整数n:n!=1*2*3*4*5*..*n
如果用函数fun(n) 可以表示为:
fun(n)=1*2*3*4*5*..*n=fun(n-1)*n
如果用递归函数
>>> def fun(n): ... if n == 1: ... return 1 ... return fun(n-1) * n ... >>> fun(2) 2 >>> fun(10) 3628800
举例:
写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者
#!/usr/bin/env python
# -*- coding:utf-8 -*-
def fun2(depth, a1, a2): if depth == 10: return a1 a3 = a1 + a2 r = fun2(depth + 1, a2, a3) return r ret = fun2(1,0,1) print(ret)
递归小结:
递归的目的是简化程序设计,使程序易读。
但递归增加了系统开销。 时间上, 执行调用与返回的额外工作要占用CPU时间。空间上,随着每递归一次,栈内存就多占用一截。
冒泡排序一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序算法的运作如下:
例:
li = [22, 12, 33, 21] for i in range(1,len(li)): for j in range(len(li) - i): if li[j] > li[j + 1]: temp = li[j] li[j] = li[j + 1] li[j + 1] = temp print(li)
标签:
原文地址:http://www.cnblogs.com/jl-bai/p/5486959.html