函数的递归

函数递归

  • 必须有一个明确的结束条件

  • 每次进入更深层次时,问题规模相比上次递归应有所减小

  • 递归效率不高

    eg:

def calc(n):
     print(n)
     if int(n / 2) == 0:
         return n
     res=calc(int(n / 2))
     return res
calc(10)
print(res)

分析:

1.执行calc(10)

def calc(10):
     print(10)              #打印10
     if int(10 / 2) == 0:   #判断10除以2取整是否为0
         return n
     res=calc(int(10 / 2))  #执行calc(5)并把结果赋值给res
     return res             #等待返回值res(calc(5)的值)
*****************************************************************************
2.执行calc(5)
def calc(5):
     print(5)               #打印5
     if int(5 / 2) == 0     #判断5除以2取整是否为0
         return n
     res=calc(int(5 / 2))   #执行calc(2)并把结果赋值给res
     return  res            #等待返回值res(calc(2)的值)
****************************************************************************
3.执行calc(2)
def calc(2):
     print(2)               #打印2
     if int(2 / 2) == 0     #判断2除以2取整是否为0
         return n
     res=calc(int(2 / 2))   #执行calc(1)并把结果赋值给res
     return res             #等待返回值res(calc(1)的值)
****************************************************************************
4.执行calc(1)
def calc(1):
     print(1)               #打印1
     if int(1 / 2) == 0:    #判断1除以2取整是否为0
         return 1           #条件成立返回1,则calc(1)等于1
     res=calc(int(n / 2))
     return res

将calc(1)=1返回给calc(2)的res,将calc(2)=1返回给calc(5),将calc(5)=1的值返回给calc(10)
也就是执行最后一步return res.

第一次在博客园用markdown,感觉真的很难用
返回顶部

posted @ 2018-03-27 16:50  sumcet  阅读(171)  评论(0编辑  收藏  举报