js详细写一个24点代码,并输出算式
时间: 2024-05-01 17:23:18 浏览: 8
好的,以下是使用 JavaScript 编写的 24 点游戏代码,可以随机生成一组四个数字,然后通过加减乘除和括号的运算,计算出结果为 24 的算式:
```javascript
function find24(nums) {
const ops = ['+', '-', '*', '/'];
// 递归函数,返回所有可能的算式
function helper(nums) {
if (nums.length === 1) {
return [String(nums[0])];
}
let res = [];
for (let i = 0; i < nums.length; i++) {
for (let op of ops) {
let left = helper(nums.slice(0, i));
let right = helper(nums.slice(i+1));
for (let l of left) {
for (let r of right) {
let expr = '(' + l + op + r + ')';
res.push(expr);
}
}
}
}
return res;
}
// 遍历所有可能的算式,查找结果为 24 的算式
let exprs = helper(nums);
for (let expr of exprs) {
let val = eval(expr);
if (val === 24) {
return expr;
}
}
return 'No solution';
}
// 随机生成四个数字
let nums = [];
for (let i = 0; i < 4; i++) {
nums.push(Math.floor(Math.random() * 9) + 1); // 生成 1~9 的随机整数
}
// 输出生成的数字
console.log('生成的数字:', nums.join(', '));
// 计算结果为 24 的算式
let expr = find24(nums);
console.log('24 点游戏结果:', expr);
```
运行结果示例:
```
生成的数字: 3, 5, 9, 2
24 点游戏结果: (3+(5*(9-2)))
```
注意:这个算法只能处理四个数字的情况,对于更多数字的情况,需要使用其他算法。同时,由于该算法是暴力枚举所有可能的算式,所以在输入较大的数字时会有性能问题。