python学习day17 递归函数

递归函数

http://www.cnblogs.com/Eva-J/articles/7205734.html

def age(n):
    if n == 4:
        return 40
    elif n >0 and n < 4:
        return age(n+1) + 2

print(age(1)) # 46

只要写递归函数,必须要有结束条件。

二分法查找

l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
def find(l,aim,start = 0,end = None):
    end = len(l) if end is None else end
    mid_index = (end - start)//2 + start  ## 注意这个!
    if start <= end:
        if l[mid_index] < aim:
            return find(l,aim,start =mid_index+1,end=end)
        elif l[mid_index] > aim:
            return find(l, aim, start=start, end=mid_index-1)
        else:
            return mid_index
    else:
        return '找不到这个值'
ret= find(l,67)
print(ret)  # 18

斐波那契

# 斐波那契  # 问第n个斐波那契数是多少
# 1,1,2,3,5,8   #fib(6) = fib(5) + fib(4)
def fibn(n):
    if n==1 or n==2:
        return 1
    else:
        return fibn(n - 1) +fibn(n - 2)  # 一般情况下 避免使用双递归

阶乘

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

猜你喜欢

转载自www.cnblogs.com/happyfan/p/9909979.html
今日推荐