python 返回值(return)None

用python写了一个递归实现的折半查找函数,开始时的代码如下:


"""折半查找法,排序为从大到小排序"""
def halffind(inTab,inData,begin,end):
if begin < end :
temp = (begin+end)//2
if inData == inTab[temp]:
return temp
elif begin+1 == end: #当begin+1==end时,begin = temp
return end
if inData > inTab[temp]:
halffind(inTab,inData,begin,temp)
else :
halffind(inTab,inData,temp,end)
else:
print('begin must smaller than end')
return -1;


测试如下:

>>> a = array([9,8,7,6,5,4,3,2,1])
>>> r = halffind(a,6,0,8)
>>> r
>>> 
>>> type(r)
<type 'NoneType'>
>>> 

也就是说返回值为None,搞了两个小时后才发现,python和C语言不太一样,在递归的地方也要return

正确的代码为:


"""折半查找法,排序为从大到小排序"""
def halffind(inTab,inData,begin,end):
    if begin < end :

if inData>=inTab[begin]:
            return begin
        elif inData<inTab[end]:
            return -1
        
        if begin+1 == end: #当begin+1==end时,begin = temp
            return end 

temp = (begin+end)//2
        if inData > inTab[temp]:
            return halffind(inTab,inData,begin,temp)
        else :
            return halffind(inTab,inData,temp,end)
    else:
        print('begin must smaller than end')
        return -1;


测试结果:

>>> a = array([9,8,7,6,5,4,3,2,1])
>>> r = halffind(a,6,0,8)
>>> r
3

另外分享一个网站,学习python:http://sebug.net/paper/python/index.html


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值