台灣最大程式設計社群網站
線上人數
1633
 
會員總數:241121
討論主題:186795
歡迎您免費加入會員
討論區列表 >> Java Script/ Node.js >> 想請問用javascript練習寫的二進位搜尋哪裡有錯誤,為何無法執行呢?
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
想請問用javascript練習寫的二進位搜尋哪裡有錯誤,為何無法執行呢?
價值 : 5 QP  點閱數:171 回應數:5

樓主

Wan Yun He
門外漢
0 2
20 2
發送站內信

這是在下用javascript練習寫的2進位搜尋,請問哪裡有錯,為何無法執行呢?求解,謝謝!

<script>
function binary_search(array, target) {
var L = 0, R = array.length - 1;
while(L<=R) {
var M = Math.floor((L+R)/2);
if(array[M]==target){
return M;
} else if(array[M]>target) {
R = M - 1;
} else {
L = M + 1;
}
}
return -1;
}

var my_list=[1,3,5,7,9];
document.write.binary_search(my_list,3);
document.write.binary_search(my_list,-1);
</script>


搜尋相關Tags的文章: [ javascript ] ,
本篇文章發表於2017-08-02 16:45
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

小魚
檢舉此回應
前面我不知道,不過document.write不是應該要用括號包起來嗎?


本篇文章回覆於2017-08-02 19:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Wan Yun He
檢舉此回應
感謝回覆,問題解決了
本篇文章回覆於2017-08-03 12:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Wan Yun He
檢舉此回應
不好意思,可以再詢問一下,為何這樣寫按鈕無法執行呢??
上面的程式馬是一樣的,但document.write改為按鈕

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>二進位搜尋</title>

<script>

function binary_search(array, target) {
var L = 0, R = array.length - 1;
while(L<=R) {
var M = Math.floor((L+R)/2);
if(array[M]==target){
return M;
} else if(array[M]>target) {
R = M - 1;
} else {
L = M + 1;
}
}
return -1;
}

var my_list=[1,3,5,7,9];
var button=document.getElementById('button');
var input=document.getElementById('input').value;
button.onclick= function (){
var number1=binary_search (my_list,input);
alert(number1);
};

</script>

</head>

<body>

<span>搜尋數字:</span>
<input type="text" id="input">
<input type="button" name="button" id="button" value="搜尋">

</body>
</html>
本篇文章回覆於2017-08-03 12:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小魚
檢舉此回應
我沒時間幫你試,
不過你如果要觸發事件,
簡單的方式是在button裡宣告 onclick
或是用jQuery的$(document).ready
本篇文章回覆於2017-08-03 21:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
我覺得樓主用的JS寫法很微妙,或者說很古老?
總之請將script的部分移到</html>下面吧
樓主在宣告click觸發事件時,瀏覽器還沒載入指定id的元件
所以事件無法綁定,如果在chrome中按F12就會看到紅色的錯誤訊息,告訴你指定的元件未定義
本篇文章回覆於2017-08-04 09:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.