Rumah hujung hadapan web tutorial js javascript中"/"运算符常见错误_javascript技巧

javascript中"/"运算符常见错误_javascript技巧

May 16, 2016 pm 06:18 PM
pengendali

//二分查找健忘递归版本

复制代码 代码如下:

function binary_search(arr,target,low,high){
if(low          var min=(low+high)/2;
if(target>arr[min])
return binary_search(arr,target,min+1,high);
else
return binary_search(arr,target,low,min);
}else if(low==high){ //只剩下一个元素
if(arr[low]==target)
return low;
else return -1;
}else if(low>high){ //空,当用arr.length-1来计算arr的初始high时才要考虑
return -1;
}
}

var arr=[1,2,3,4,5,6];
alert(binary_search(arr,3,0,arr.length-1));
晚上看数据结构,顺便就用js写了个二分查找算法(代码如上),然后随便写了个数组作为测试数据(如上),按照设想应该是输出查找目标的下标,但是意向不到的事情发生了,只见CPU霎时狂转,约两秒后,浏览器自动终止了脚本的运行,然后就一阵纳闷。

根据经验来看,应该是在脚本运行的过程出现了死循环,自习看了一下算法,没有发现什么问题(干脆直接照着课本上的代码输入总不会错了吧),但是问题依旧。于是就在第一个判断条件里面加了个输出语句,如下:
复制代码 代码如下:

//二分查找健忘递归版本function binary_search(arr,target,low,high){
if(low  var min=(low+high)/2;
       if(target>arr[min])
return binary_search(arr,target,min+1,high);
  else
    return binary_search(arr,target,low,min);
}else if(low==high){ //只剩下一个元素
  if(arr[low]==target)
    return low;
   else return -1;
}else if(low>high){ //空,当用arr.length-1来计算arr的初始high时才要考虑
  return -1;
}
}

运行,弹出个对话框,里面数字为2.5~~突然有种恍然大悟同时想要砸电脑的冲动。

出错原因以及总结:
  javascript里面的"/"运算符跟C++里面的"/"运算符不一样,后者自动取整,前者若非整除则会得到小数(比如说5/2=2.5)。
解决方案:

(1)var min=parseInt((low+high)/2);
(2)var min=Match.floor((low+high)/2);
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah pengendali akar dalam bahasa C? Apakah pengendali akar dalam bahasa C? Mar 06, 2023 pm 02:39 PM

Dalam bahasa C, tiada operator root Fungsi terbina dalam "sqrt()" digunakan untuk membuka root, dan sintaks "sqrt(value x)" digunakan sebagai contoh, "sqrt(4)" adalah untuk melaksanakan operasi punca kuasa dua pada 4. , hasilnya ialah 2. sqrt() ialah fungsi operasi akar terbina dalam bahasa C Hasil operasinya ialah punca kuasa dua aritmetik bagi fungsi pembolehubah;

Ralat Golang: 'penggunaan ... operator tidak sah' Bagaimana untuk menyelesaikannya? Ralat Golang: 'penggunaan ... operator tidak sah' Bagaimana untuk menyelesaikannya? Jun 24, 2023 pm 05:54 PM

Bagi pembangun Golang, "invaliduseof...operator" ialah ralat biasa. Ralat ini biasanya berlaku apabila menggunakan fungsi parameter panjang berubah-ubah. Ia akan dikesan pada masa penyusunan dan menunjukkan bahagian mana yang mempunyai masalah. Artikel ini akan memperkenalkan cara menyelesaikan ralat ini. 1. Apakah fungsi parameter panjang pembolehubah? Fungsi parameter panjang pembolehubah juga dipanggil fungsi parameter pembolehubah Ia adalah jenis fungsi dalam bahasa Golang. Menggunakan fungsi parameter panjang boleh ubah, anda boleh menentukan berbilang fungsi seperti berikut:

Apakah maksud % dalam Java Apakah maksud % dalam Java Mar 06, 2023 pm 04:48 PM

Dalam Java, "%" bermaksud baki Ia adalah operator aritmetik binari yang boleh melakukan operasi bahagi dan mendapatkan baki Sintaksnya ialah "operand 1 % operan 2". Operan pengendali yang selebihnya "%" biasanya merupakan integer positif atau nombor negatif atau bahkan nombor titik terapung Jika nombor negatif mengambil bahagian dalam operasi ini, hasilnya bergantung pada sama ada nombor sebelumnya adalah positif atau negatif.

Analisis makna dan penggunaan operator += dalam bahasa C Analisis makna dan penggunaan operator += dalam bahasa C Apr 03, 2024 pm 02:27 PM

Operator += digunakan untuk menambah nilai operan kiri kepada nilai operan kanan dan menetapkan hasilnya kepada operan kiri Ia sesuai untuk jenis berangka dan operan kiri mesti boleh ditulis.

Apakah maksud simbol '==' dalam php Apakah maksud simbol '==' dalam php Mar 14, 2023 pm 07:05 PM

Dalam PHP, simbol "==" ialah operator perbandingan yang boleh membandingkan sama ada dua operan adalah sama Sintaksnya ialah "operand 1 == operan 2". Operator "==" membandingkan dan menguji sama ada pembolehubah di sebelah kiri (ungkapan atau pemalar) mempunyai nilai yang sama dengan pembolehubah di sebelah kanan (ungkapan atau pemalar ia hanya membandingkan nilai pembolehubah, bukan data); jenis. Jika kedua-dua nilai adalah sama, ia mengembalikan nilai benar; jika kedua-dua nilai tidak sama, ia mengembalikan nilai palsu.

Bagaimana untuk menentukan sama ada dua nombor boleh dibahagikan dalam php Bagaimana untuk menentukan sama ada dua nombor boleh dibahagikan dalam php Jan 10, 2023 pm 03:12 PM

Dalam PHP, anda boleh menggunakan operator "%" dan "==" untuk menentukan sama ada dua nombor boleh dibahagikan, anda hanya perlu menggunakan operator "%" untuk membahagikan dua nombor untuk mendapatkan bakinya, dan kemudian gunakan "=; =" operator Hanya nilai sama ada baki yang diperolehi ialah 0. Sintaks ialah "Nombor 1 % Nombor 2 == 0". Jika 0, ia boleh dibahagikan. Jika bukan 0, ia tidak boleh dibahagikan.

Peta minda sintaks Python: pemahaman mendalam tentang struktur kod Peta minda sintaks Python: pemahaman mendalam tentang struktur kod Feb 21, 2024 am 09:00 AM

Python digunakan secara meluas dalam pelbagai bidang dengan sintaksnya yang ringkas dan mudah dibaca. Menguasai struktur asas sintaks Python adalah penting, kedua-duanya untuk meningkatkan kecekapan pengaturcaraan dan untuk mendapatkan pemahaman yang mendalam tentang cara kod tersebut berfungsi. Untuk tujuan ini, artikel ini menyediakan peta minda komprehensif yang memperincikan pelbagai aspek sintaks Python. Pembolehubah dan Jenis Data Pembolehubah ialah bekas yang digunakan untuk menyimpan data dalam Python. Peta minda menunjukkan jenis data Python biasa, termasuk integer, nombor titik terapung, rentetan, nilai Boolean dan senarai. Setiap jenis data mempunyai ciri dan kaedah operasinya sendiri. Operator Operator digunakan untuk melaksanakan pelbagai operasi pada jenis data. Peta minda merangkumi jenis operator yang berbeza dalam Python, seperti operator aritmetik, nisbah

Kaedah ajaib dalam Python Kaedah ajaib dalam Python Apr 13, 2023 am 10:25 AM

Kaedah ajaib dalam Python ialah kaedah khas yang membolehkan anda menambah "sihir" pada kelas Ia sering dinamakan dikelilingi oleh dua garis bawah. Kaedah ajaib Python, juga dikenali sebagai kaedah dunder (garis bawah berganda). Selalunya, kami menggunakannya untuk perkara mudah seperti pembina (init), perwakilan rentetan (str, repr) atau pengendali aritmetik (tambah/mul). Sebenarnya, terdapat banyak kaedah yang mungkin anda tidak pernah dengar tetapi sangat berguna Dalam artikel ini, kami akan menyusun kaedah ajaib ini Kita semua tahu saiz kaedah iterator __len__, yang boleh digunakan dalam kelas kontena fungsi len() dihidupkan. Walau bagaimanapun, jika anda ingin mendapatkan panjang objek kelas yang melaksanakan iterator

See all articles