zoukankan      html  css  js  c++  java
  • 8 递归函数

    在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数

    递归特性:

    1. 必须有一个明确的结束条件
    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
    3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
    
    def calc(n):
    	print(n)
         
        if int(n/2) ==0:    
            return n
         
        return calc(int(n/2))
    
    calc(10)
    
    #输出
    
    10
    5
    2
    1
    

    来看实现过程,我改了下代码

    def calc(n):
    
        v = int(n/2)
         
        print(v)
         
        if v == 0:
         
            return
         
        calc(v)
         
        print(v)
    
    calc(10)
    
    #输出
    
    5
    2
    1
    0
    1
    2
    5
    

    为什么输出结果是这样?

    递归

  • 相关阅读:
    数组及其方法
    Web Worker
    nodejs输入输出
    head标签中的meta
    对象副本的拷贝
    bower指南(一)
    gulp指南(一)
    云服务器搭建
    http协议简单介绍(转)
    使用traits
  • 原文地址:https://www.cnblogs.com/shibojie/p/11658271.html
Copyright © 2011-2022 走看看