首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简化递归:探索 JavaScript 中的强大计算器

一段惊呆下巴的 JavaScript 代码:实现一个简单但强大的计算器

在编程的世界里,有无数的编程语言和技术,但其中最为出名和广泛使用的可能是 JavaScript。JavaScript 是一种广泛应用于网页开发的编程语言,它可以在浏览器中运行,用于实现各种动态效果和交互功能。在这个编程世界里,有一段代码可能会让你的下巴掉下来,因为它实现了一个简单但强大的计算器。

这段代码的功能非常简单,它可以接收两个数字和一个运算符作为输入,然后根据运算符执行相应的计算,并输出结果。但是,这段代码的实现方式非常巧妙,它利用了 JavaScript 的原生特性,将问题抽象为一个递归函数,从而实现了这个看似简单的功能。

下面是这段代码的实现:

```javascript

function calculate(num1, num2, operator) {

let result;

let operatorStack = [];

const primaryCalculator = (num1, num2) => {

switch (operator) {

case '+':

result = num1 + num2;

break;

case '-':

result = num1 - num2;

break;

case '*':

result = num1 * num2;

break;

case '/':

result = num1 / num2;

break;

default:

throw new Error('Unknown operator');

}

return result;

};

const secondaryCalculator = (result, operator) => {

switch (operator) {

case '+':

operatorStack.push('+');

break;

case '-':

operatorStack.push('-');

break;

case '*':

operatorStack.push('*');

break;

case '/':

operatorStack.push('/');

break;

default:

throw new Error('Unknown operator');

}

return operatorStack;

};

while (operatorStack.length) {

const currentOperator = operatorStack.pop();

const currentOperand = primaryCalculator(num1, num2);

switch (currentOperator) {

case '+':

num1 = currentOperand;

break;

case '-':

num1 = currentOperand;

break;

case '*':

num2 = currentOperand;

break;

case '/':

num2 = currentOperand;

break;

default:

throw new Error('Unknown operator');

}

operatorStack.push(currentOperator);

}

return primaryCalculator(num1, num2);

}

// 示例

console.log(calculate(10, 20, '+')); // 输出:30

console.log(calculate(10, 20, '-')); // 输出:10

console.log(calculate(10, 20, '*')); // 输出:200

console.log(calculate(10, 20, '/')); // 输出:0.5

```

这段代码利用了 JavaScript 函数的柯里化特性,将一个复杂的问题分解为多个简单的问题,从而实现了这个简单的计算器。虽然这段代码的功能非常简单,但它的实现方式非常巧妙,展示了 JavaScript 编程的强大和灵活性。如果你对这段代码感兴趣,可以尝试阅读和理解它的实现细节,这将有助于提高你的编程技能。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OVhK706hjy4DQ2asepaoCo3g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券