深入函数.递归详解

1.递归的本质是将上次的输出作为下次的输入

1.PYTHON函数可以调用自身,所以一定要有终止条件,不然会以抛出'超过最大递归深度'的错误信息结束

代码流程:

深入函数.递归详解_第1张图片

代码实现:

# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: http://my.oschina.net/pydevops/
# Purpose:
#
"""


# 二分查找
def binary_search(find_num, find_list):
    """Binary search

    Args:
        find_num : the num of you find
        find_list: data source
    Returns:
        None
    """
    # 中间值索引
    middle_index = len(find_list)/2
    middle_num = find_list[middle_index]
    # 列表中只有2个或是2个值以上
    cur_list = None
    if middle_index > 0:
        if find_num > middle_num:
            cur_list = find_list[middle_index:]
            print 'Found Notice: %s in right %s.' % (find_num,
                                                     find_list[middle_index:])
        elif find_num < middle_num:
            cur_list = find_list[:middle_index]
            print 'Found Notice: %s in left %s' % (find_num,
                                                   find_list[:middle_index])
        else:
            print 'Found Notice: find %s.' % (find_num)
            return
        if cur_list:
            binary_search(find_num, cur_list)
    else:
        if find_num == find_list[0]:
            print 'Found Notice: find %s in %s' % (find_num, find_list)
        else:
            print 'Found Errors: could not find %s in %s' % (find_num,
                                                             find_list)

def main():
    """Main function."""
    find_num = 66
    find_list = range(0, 100, 2)
    binary_search(find_num, find_list)

if __name__ == '__main__':
    main()


你可能感兴趣的:(深入函数.递归详解)