亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2906 | 回復: 3
打印 上一主題 下一主題

為什么我這個遞歸的binary search 會recursion depth exceeded [復制鏈接]

論壇徽章:
13
CU大牛徽章
日期:2013-03-14 14:14:082016科比退役紀念章
日期:2016-07-22 11:15:35數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-05-27 06:20:002015亞冠之吉達阿赫利
日期:2015-08-05 10:06:542015年亞洲杯之韓國
日期:2015-04-01 16:05:42雙魚座
日期:2014-11-13 11:04:24丑牛
日期:2014-07-25 17:29:54子鼠
日期:2014-04-25 12:25:45丑牛
日期:2014-04-17 08:35:48巨蟹座
日期:2014-04-16 16:50:05CU大;照
日期:2013-03-14 14:14:29CU大;照
日期:2013-03-14 14:14:26
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-03-29 17:01 |只看該作者 |倒序瀏覽
  1. #binary search recursive
  2. def binary_search_rec(seq,key,low=0,high=None):
  3.     low=0
  4.     high=len(seq)-1
  5.     mid=(high+low)//2
  6.     if not seq or low > high:
  7.         return False
  8.     if seq[mid]==key:
  9.         return mid
  10.     if key < seq[mid]:
  11.         return binary_search_rec(seq,key,low,mid)
  12.     else:
  13.         return binary_search_rec(seq,key,mid,high)

  14. #binary search iterative
  15. def binary_search_iter(seq,key):
  16.     hi,lo=len(seq)-1,0
  17.     while lo < hi:
  18.         mid=(hi+lo)//2
  19.         if key==seq[mid]:
  20.             return mid
  21.         elif key < seq[mid]:
  22.             hi=mid
  23.         else:
  24.             lo=mid+1
  25.     return False

  26. import bisect
  27. def test_binary_search2():
  28.     seq=[1,2,5,6,7,10,12,12,14,15]
  29.     key=6
  30.     print(binary_search_iter(seq,key))
  31.     print(binary_search_rec(seq,key))
復制代碼

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
2 [報告]
發(fā)表于 2016-03-30 00:55 |只看該作者
回復 1# hmchzb19
  1. #!/usr/bin/ruby -w

  2. def bisere seq, key, low, high
  3.     # if reset low = 0. high = size - 1
  4.     # no way: low > high
  5.    
  6.     return nil if low > high
  7.     mid = ( high + low ) / 2
  8.     if seq[mid] == key
  9.         mid
  10.     elsif key < seq[mid]
  11.         bisere seq, key, low, mid - 1   # here: mid - 1
  12.     else
  13.         bisere seq, key, mid + 1, high  # here: mid + 1
  14.     end
  15. end

  16. seq = [ 1, 2, 5, 6, 7, 10, 12, 12, 14, 15 ]
  17. key = 6
  18. ret = bisere seq, key, 0, seq.size - 1  # here: low, high
  19. puts ret
  20. __END__
復制代碼

論壇徽章:
11
2015年迎新春徽章
日期:2015-03-04 09:55:282017金雞報曉
日期:2017-02-08 10:39:4215-16賽季CBA聯(lián)賽之遼寧
日期:2016-12-15 10:24:1715-16賽季CBA聯(lián)賽之佛山
日期:2016-11-30 09:04:2015-16賽季CBA聯(lián)賽之江蘇
日期:2016-04-29 15:56:1215-16賽季CBA聯(lián)賽之同曦
日期:2016-04-12 13:21:182016猴年福章徽章
日期:2016-02-18 15:30:3415-16賽季CBA聯(lián)賽之山東
日期:2016-02-16 11:37:52每日論壇發(fā)貼之星
日期:2016-02-07 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-02-07 06:20:0015-16賽季CBA聯(lián)賽之新疆
日期:2018-01-09 16:25:37
3 [報告]
發(fā)表于 2016-03-31 09:59 |只看該作者
回復 1# hmchzb19

python的特性就是不能很多次的遞歸,估計原因可能是因為python在后臺維護了很多資源,比如調(diào)用棧需要很多的屬性,每個屬性可能又有很多屬性....
就是最基本的屬性,對應到C/C++上面是要占用不少內(nèi)存等資源的....
實際用的資源就很多了

另外一方面.遞歸算法都可以轉(zhuǎn)化為非遞歸的算法
python里面也有變通的方法的


   

論壇徽章:
13
CU大牛徽章
日期:2013-03-14 14:14:082016科比退役紀念章
日期:2016-07-22 11:15:35數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-05-27 06:20:002015亞冠之吉達阿赫利
日期:2015-08-05 10:06:542015年亞洲杯之韓國
日期:2015-04-01 16:05:42雙魚座
日期:2014-11-13 11:04:24丑牛
日期:2014-07-25 17:29:54子鼠
日期:2014-04-25 12:25:45丑牛
日期:2014-04-17 08:35:48巨蟹座
日期:2014-04-16 16:50:05CU大;照
日期:2013-03-14 14:14:29CU大;照
日期:2013-03-14 14:14:26
4 [報告]
發(fā)表于 2016-03-31 12:10 |只看該作者
回復 3# bskay


    你看2樓,我代碼寫錯了.

python 修改stack 的遞歸深度很簡單:
import sys
sys.setrecursionlimit(1000000)
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP