递归

一、程序调用自身的编程技巧称为递归

例子:

#最大递归深度997/998——python限制的
n=0
def story():
    print('')
    global n
    n+=1
    print(n)
    story()
story()
'''
#修改深度

例子
1、
def age(n):
    if n==4:
        return  12
    elif n>0 and n<4:
        return age(n+1)+2
print(age(1))
2、
#斐波那契1,1,2,3,5,8
def fib(n):
    if n==1 or n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
print(fib(14))

总结:

#如果递归次数太多就不适合用递归来解决问题
#占用内存
#使代码变简单
#递归必须要有结束条件
#返回值不要只看到return,要看返回操作是递归到第几层发生,然后返回给了谁,如果不是返回给最外层函数就接收不到

二、算法啊:计算方法——人脑复杂,计算机简单

1、查找

二分法查找算法——有序数列

#二分法查找数
def find(l,aim,start=0,end=None):
    end=len(l) if end is None else end
    mid_index=(start+end)//2
    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=end-1)
   # elif l[mid_index]==aim:
        else:
          return mid_index
    else:
        return 'xx'
l=[1,2,3,4,5,7,8,9,10]
print(find(l,4))

2、排序

3、最短路径

原文地址:https://www.cnblogs.com/jcb9426986/p/10780932.html