return 将十进制数转换为二进制数的函数中的语句
return statement in function that convert decimal to binary numbers
我正在尝试了解如何在 JS 中使用函数。
此代码将十进制数转换为二进制数:
for (j = 13; j <= 16; j++) {
res = ""
number = j
while (number > 0) {
res = res + number % 2
number = Math.floor(number / 2)
}
len = res.length
rev=""
for (i = 1; i <= len; i++) {
rev = rev + res[res.length - i]
}
console.log(rev)
}
但是当我试图将这段代码放入一个函数时,函数 returns 只有第一个或最后一个值。我做错了什么?
function f(min, max) {
for (j = min; j <= max; j++) {
res = ""
number = j
while (number > 0) {
res = res + number % 2
number = Math.floor(number / 2)
}
len = res.length
rev=""
for (i = 1; i <= len; i++) {
rev = rev + res[res.length-i]
}
}
return rev
}
console.log(f(13,15))
您必须将每次迭代的结果存储在数组中。
function f(min, max) {
const results = []
for (j = min; j <= max; j++) {
res = ""
number = j
while (number > 0) {
res = res + number % 2
number = Math.floor(number / 2)
}
len = res.length
rev=""
for (i = 1; i <= len; i++) {
rev = rev + res[res.length-i]
}
results.push(rev)
}
return results
}
console.log(f(13,15))
您还应该在 JavaScript 中声明您的变量,因为不这样做会导致错误
https://www.geeksforgeeks.org/what-happen-when-we-directly-assign-the-variable-without-declaring-it-in-javascript/
您需要一个变量来收集所有中间结果。
您可以对所有变量进行声明。
function f(min, max) {
const result = [];
for (let j = min; j <= max; j++) {
let number = j,
temp = "";
while (number > 0) {
temp += number % 2;
number = Math.floor(number / 2);
}
result.push(temp);
}
return result;
}
console.log(f(13, 15));
您应该将代码分成函数
一个将数字转换为二进制字符串的(我也包括现有的js版本)
还有一个创建最小值和最大值之间的元素列表并迭代它们的方法
const toBin = n => n.toString(2)
const customToBin = n => {
const res = []
let number = n
while (number > 0) {
res.push(number % 2)
number = Math.floor(number / 2)
}
return res.reverse().join('')
}
const createInterval = (min, max) => Array(max - min + 1).fill(min).map((_, i) => min + i)
const f = (min, max) => createInterval(min, max).map(customToBin)
console.log(f(13, 16))
我正在尝试了解如何在 JS 中使用函数。
此代码将十进制数转换为二进制数:
for (j = 13; j <= 16; j++) {
res = ""
number = j
while (number > 0) {
res = res + number % 2
number = Math.floor(number / 2)
}
len = res.length
rev=""
for (i = 1; i <= len; i++) {
rev = rev + res[res.length - i]
}
console.log(rev)
}
但是当我试图将这段代码放入一个函数时,函数 returns 只有第一个或最后一个值。我做错了什么?
function f(min, max) {
for (j = min; j <= max; j++) {
res = ""
number = j
while (number > 0) {
res = res + number % 2
number = Math.floor(number / 2)
}
len = res.length
rev=""
for (i = 1; i <= len; i++) {
rev = rev + res[res.length-i]
}
}
return rev
}
console.log(f(13,15))
您必须将每次迭代的结果存储在数组中。
function f(min, max) {
const results = []
for (j = min; j <= max; j++) {
res = ""
number = j
while (number > 0) {
res = res + number % 2
number = Math.floor(number / 2)
}
len = res.length
rev=""
for (i = 1; i <= len; i++) {
rev = rev + res[res.length-i]
}
results.push(rev)
}
return results
}
console.log(f(13,15))
您还应该在 JavaScript 中声明您的变量,因为不这样做会导致错误 https://www.geeksforgeeks.org/what-happen-when-we-directly-assign-the-variable-without-declaring-it-in-javascript/
您需要一个变量来收集所有中间结果。
您可以对所有变量进行声明。
function f(min, max) {
const result = [];
for (let j = min; j <= max; j++) {
let number = j,
temp = "";
while (number > 0) {
temp += number % 2;
number = Math.floor(number / 2);
}
result.push(temp);
}
return result;
}
console.log(f(13, 15));
您应该将代码分成函数
一个将数字转换为二进制字符串的(我也包括现有的js版本)
还有一个创建最小值和最大值之间的元素列表并迭代它们的方法
const toBin = n => n.toString(2)
const customToBin = n => {
const res = []
let number = n
while (number > 0) {
res.push(number % 2)
number = Math.floor(number / 2)
}
return res.reverse().join('')
}
const createInterval = (min, max) => Array(max - min + 1).fill(min).map((_, i) => min + i)
const f = (min, max) => createInterval(min, max).map(customToBin)
console.log(f(13, 16))