python 递归函数返回值

来源:互联网 发布:linux进程崩溃 编辑:程序博客网 时间:2024/05/17 21:42

                                                   python递归函数返回值

以下是用递归实现有序数组的二分查找Python代码
def binarysearch(seq, x, lower = 0, upper = None):
    if upper == None: upper = len(seq) -  1
    middle = (lower + upper) / 2
    if x == seq[middle]:
        return middle
    elif x > seq[middle]:
        lower = middle + 1
    else:
        upper = middle - 1
    if upper < lower:
        print x, 'is not in', seq
        return
    return binarysearch(seq, x, lower, upper)     #此处必须加上return,否则函数总是返回None

if __name__ == '__main__':
   
    seq = [34, 67, 8, 123, 4, 100, 95]
    seq.sort()
    y = binarysearch(seq, 34)
    print y
   

递归过程:

    第一次调用binarysearch函数 ——>      第二次调用binarysearch函数——>        ......  ——>                第n次调用binarysearch函数 

                                                                                                                                                                                               |

将return返回值返回第1次调用的binarysearch函数<——将return返回值返回第n-2次调用的binarysearch函数 <——  将return返回值返回第n-1次调用的binarysearch函数

        调用binarysearch函数,其最终的返回值就是第一次调用binarysearch函数的返回值,如果上述代码中不加标红的return关键字,第一次调用的binarysearch函数永远都是返回None  

0 0
原创粉丝点击