javascript - JS 简单数学任务(将输入的数字提高到幂)
问题描述
我在js中有一个任务。我的程序应该从用户那里获取一个数字,并将其放入也插入的电源中。我已经处理了正幂,但是负幂的算法总是给出肯定的答案,并且在选择零幂之后,每个变体都会以某种方式返回 -1;请帮我找出错误。
function powX(x, pow) {
x = +prompt('Insert a number: ');
pow = +prompt('Insert a power: ');
var result;
if (x > 0) {
var result = x;
for (i = 1; i < pow; i++) {
result *= x;
}
}
if (x < 0) {
var result = x;
for (i = 1; i < Math.abs(pow); i++) {
result /= x;
}
} else {
result = 1;
}
return result;
}
console.log(powX());
解决方案
代码中有几个错误:
- 您应该在第二个块中使用
else-if
而不是。if
- 你应该检查
pow
而不是x
- 您没有使用
var
或let
使用,i
因此它将成为全局变量。使用let
或var
- 您在块
var
内再次使用,if
但声明的变量var
具有函数范围,因此不会引发错误。但let
它会破坏你的代码。不要一次又一次地重新声明result
。
function powX(x, pow) {
x = +prompt('Insert a number: ');
pow = +prompt('Insert a power: ');
var result;
if (pow > 0) {
result = x;
for (let i = 1; i < pow; i++) {
result *= x;
}
}
else if (pow < 0) {
result = x;
for (let i = 0; i <= Math.abs(pow); i++) {
result /= x;
}
} else {
result = 1;
}
return result;
}
console.log(powX());
您不需要两个循环,一个用于除法,另一个使用乘法。result
只需通过乘法计算,最后x
根据条件将结果乘以或除以。
function powX(x, pow) {
x = +prompt('Insert a number: ');
pow = +prompt('Insert a power: ');
if(pow === 0) return 1;
var result = x;
for (let i = 1; i < Math.abs(pow); i++) {
result *= x;
}
return pow < 0 ? (x/result/x) : result;
}
console.log(powX());
推荐阅读
- ios - React Native 应用程序在 AppStore 上被拒绝,显然在启动时失败
- python-3.x - 由于 LLVM,无法在 Python 3.7.5 和 Ubuntu 18.04 上安装 vaex?
- r - 如果重复 id uniqueID,则改变新列
- pandas - 来自 read_csv 的 Pandas 分层数据
- php - number_format 将浮点数转换为字符串 php
- html - 引导模式
- c++ - 如何在 iOS 上调用使用 OpenCV C++ 的 Flutter 插件?
- authentication - Nuxt Auth Module 使用 serverMiddleware 还是客户端之一?
- neo4j - 如何在 Neo4j 密码查询中包含特定于展开块中返回的每个节点的关系列表?
- reactjs - Reactjs REST API未打印到屏幕