javascript中"/"运算符常见错误_javascript技巧
//二分查找健忘递归版本
function binary_search(arr,target,low,high){
if(low
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
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);

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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;

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:

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.

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.

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.

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.

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 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
