Heim Web-Frontend js-Tutorial javascript中"/"运算符常见错误_javascript技巧

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

May 16, 2016 pm 06:18 PM
运算符

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

复制代码 代码如下:

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);
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der Root-Operator in der C-Sprache? Was ist der Root-Operator in der C-Sprache? Mar 06, 2023 pm 02:39 PM

In der C-Sprache gibt es keinen Root-Operator. Zum Öffnen des Roots wird die Syntax „sqrt(value x)“ verwendet. besteht darin, die Quadratwurzeloperation für 4 durchzuführen. Das Ergebnis ist 2. sqrt() ist eine integrierte Root-Operationsfunktion in der C-Sprache. Ihr Operationsergebnis ist die arithmetische Quadratwurzel der Funktionsvariablen. Diese Funktion kann weder negative Werte verarbeiten noch imaginäre Ergebnisse ausgeben.

Golang-Fehler: „Ungültige Verwendung des ...-Operators' Wie kann man ihn lösen? Golang-Fehler: „Ungültige Verwendung des ...-Operators' Wie kann man ihn lösen? Jun 24, 2023 pm 05:54 PM

Für Golang-Entwickler ist „invaliduseof...operator“ ein häufiger Fehler. Dieser Fehler tritt normalerweise auf, wenn Parameterfunktionen variabler Länge verwendet werden. Es wird zur Kompilierungszeit erkannt und zeigt an, bei welchen Teilen Probleme auftreten. In diesem Artikel erfahren Sie, wie Sie diesen Fehler beheben können. 1. Was ist eine Parameterfunktion variabler Länge? Eine Parameterfunktion variabler Länge wird in der Golang-Sprache auch als Funktion variabler Parameter bezeichnet. Mithilfe von Parameterfunktionen variabler Länge können Sie mehrere Funktionen wie folgt definieren:

Was bedeutet % in Java? Was bedeutet % in Java? Mar 06, 2023 pm 04:48 PM

In Java bedeutet „%“ Rest. Es handelt sich um einen binären arithmetischen Operator, der Divisionsoperationen durchführen und den Rest ermitteln kann. Der Operand des Restoperators „%“ ist normalerweise eine positive ganze Zahl oder eine negative Zahl oder sogar eine Gleitkommazahl. Wenn eine negative Zahl an dieser Operation beteiligt ist, hängt das Ergebnis davon ab, ob die vorherige Zahl positiv oder negativ ist.

Analyse der Bedeutung und Verwendung des +=-Operators in der C-Sprache Analyse der Bedeutung und Verwendung des +=-Operators in der C-Sprache Apr 03, 2024 pm 02:27 PM

Der Operator += wird verwendet, um den Wert des linken Operanden zum Wert des rechten Operanden zu addieren und das Ergebnis dem linken Operanden zuzuweisen. Er ist für numerische Typen geeignet und der linke Operand muss beschreibbar sein.

Was bedeutet das Symbol „==' in PHP? Was bedeutet das Symbol „==' in PHP? Mar 14, 2023 pm 07:05 PM

In PHP ist das Symbol „==“ ein Vergleichsoperator, der vergleichen kann, ob zwei Operanden gleich sind. Die Syntax lautet „Operand 1 == Operand 2“. Der „==“-Operator vergleicht und testet, ob die Variable links (Ausdruck oder Konstante) den gleichen Wert hat wie die Variable rechts (Ausdruck oder Konstante); er vergleicht nur die Werte der Variablen, nicht die Daten Typen. Wenn die beiden Werte gleich sind, wird ein wahrer Wert zurückgegeben. Wenn die beiden Werte nicht gleich sind, wird ein falscher Wert zurückgegeben.

So ermitteln Sie in PHP, ob zwei Zahlen teilbar sind So ermitteln Sie in PHP, ob zwei Zahlen teilbar sind Jan 10, 2023 pm 03:12 PM

In PHP können Sie die Operatoren „%“ und „==" verwenden, um festzustellen, ob zwei Zahlen teilbar sind. Sie müssen nur den Operator „%" verwenden, um die beiden Zahlen zu dividieren, um den Rest zu erhalten, und dann den Operator „=“ verwenden ="-Operator Beurteilen Sie einfach, ob der erhaltene Rest 0 ist. Die Syntax lautet „Zahl 1 % Zahl 2 == 0“. Wenn er 0 ist, kann er teilbar sein. Wenn er nicht 0 ist, kann er nicht teilbar sein.

Mindmap der Python-Syntax: Vertiefendes Verständnis der Codestruktur Mindmap der Python-Syntax: Vertiefendes Verständnis der Codestruktur Feb 21, 2024 am 09:00 AM

Python wird aufgrund seiner einfachen und leicht lesbaren Syntax in einer Vielzahl von Bereichen häufig verwendet. Es ist von entscheidender Bedeutung, die Grundstruktur der Python-Syntax zu beherrschen, um sowohl die Programmiereffizienz zu verbessern als auch ein tiefes Verständnis für die Funktionsweise des Codes zu erlangen. Zu diesem Zweck bietet dieser Artikel eine umfassende Mindmap, die verschiedene Aspekte der Python-Syntax detailliert beschreibt. Variablen und Datentypen Variablen sind Container, die zum Speichern von Daten in Python verwendet werden. Die Mindmap zeigt gängige Python-Datentypen, einschließlich Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, boolesche Werte und Listen. Jeder Datentyp hat seine eigenen Eigenschaften und Betriebsmethoden. Operatoren Operatoren werden verwendet, um verschiedene Operationen an Datentypen auszuführen. Die Mindmap deckt die verschiedenen Operatortypen in Python ab, z. B. arithmetische Operatoren und Verhältnisse

Magische Methoden in Python Magische Methoden in Python Apr 13, 2023 am 10:25 AM

Magische Methoden in Python sind spezielle Methoden, mit denen Sie einer Klasse „Magie“ hinzufügen können. Der Name wird häufig von zwei Unterstrichen umgeben. Die magische Methode von Python, auch bekannt als Dunder-Methode (doppelte Unterstreichung). Meistens verwenden wir sie für einfache Dinge wie Konstruktoren (init), String-Darstellungen (str, repr) oder arithmetische Operatoren (add/mul). Tatsächlich gibt es viele Methoden, von denen Sie vielleicht noch nie gehört haben, die aber sehr nützlich sind. In diesem Artikel werden wir diese magischen Methoden klären. Wir alle kennen die Größe der Iterator-Methode __len__, die in Containerklassen verwendet werden kann die Funktion len() ein. Wenn Sie jedoch die Länge eines Klassenobjekts erhalten möchten, das den Iterator implementiert

See all articles