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

    一、递归函数

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

           特性:

    • 必须有一个明确的结束条件
    • 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
    • 递归函数的优点是定义简单,逻辑清晰

      注意:

      使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

    二、事例

      2.1 阶乘

    def func(n):
    
        if n == 1:
            return 1
        else:
            return n * func(n-1)
    View Code

      2.2 二分法  

    t = [i for i in range(0, 1000, 3)]
    # print(t)
    
    
    def find_num(data_list, num):
        if num in data_list:
            if len(data_list) > 1:
                mid = int(len(data_list) / 2)
                if data_list[mid] == num:
                    print('找到该数字:', data_list[mid])
                    return data_list[mid]
                elif data_list[mid] > num:
                    print('该数字在本次搜寻中间数[%d]的左边' % data_list[mid])
                    return find_num(data_list[0:mid], num)
                else:
                    print('该数字在本次搜寻中间数[%d]的右边' % data_list[mid])
                  return find_num(data_list[mid:], num)
    
            else:
                print('该数字就在列表第一位')
        else:
            print('列表中不存在该数字')
    
    if __name__ == '__main__':
        
        while True:
            n = int(input('输入你要查找的数字:'))
            find_num(t, n)
    

      

  • 相关阅读:
    PAT Advanced 1067 Sort with Swap(0, i) (25分)
    PAT Advanced 1048 Find Coins (25分)
    PAT Advanced 1060 Are They Equal (25分)
    PAT Advanced 1088 Rational Arithmetic (20分)
    PAT Advanced 1032 Sharing (25分)
    Linux的at命令
    Sublime Text3使用指南
    IntelliJ IDEA创建第一个Groovy工程
    Sublime Text3 安装ftp插件
    Sublime Text3配置Groovy运行环境
  • 原文地址:https://www.cnblogs.com/bigberg/p/8134777.html
Copyright © 2011-2022 走看看