7712算24点怎么算式两种方法(如何用7712算24点?)

2023-09-17T19:08:19

如何用7712算24点?

使用加减乘除法

对于7721算24点的问题,我们可以先将其分成两个数字,即7和721。然后,我们可以使用加减乘除法,来找到这两个数字之间的必要运算符,使得结果为24。

步骤1:将数字7和721分开。

步骤2:用加减乘除法尝试8个组合,以获得结果为24的组合。例如:

  • 7+7+2+1=17
  • 7×7-2-1=46
  • 7×(7-2)+1=36
  • ……

步骤3:尝试所有组合后,如果没有找到结果为24的组合,则表示该问题无解。

使用递归算法

除了使用加减乘除法,我们还可以使用递归算法来解决这个问题。该算法通过尝试每一种数字的所有可能组合,并在结果为24时退出递归。以下是递归算法的实现:

Step 1:将7712数字放入列表中。

Step 2:开始递归。递归函数(solve)的输入参数为数字列表(nums)和目标值(target)。递归函数会尝试每一种数字的所有可能组合,并在结果为目标值时退出递归。以下是递归函数的实现:

function solve(nums, target) {
    // 递归结束条件
    if (nums.length === 1 && nums[0] === target) {
        return true;
    }
    // 尝试每个数字的各种运算组合
    for (let i = 0; i < nums.length; i++) {
        for (let j = 0; j < nums.length; j++) {
            // 防止重复运算
            if (i === j) {
                continue;
            }
            // 构造新的数字列表
            let newNums = [];
            for (let k = 0; k < nums.length; k++) {
                if (k !== i && k !== j) {
                    newNums.push(nums[k]);
                }
            }
            // 尝试加法运算
            if (i < j) {
                newNums.push(nums[i] + nums[j]);
                if (solve(newNums, target)) {
                    return true;
                }
                newNums.pop(); // 回溯
            }
            // 尝试减法运算
            newNums.push(nums[i] - nums[j]);
            if (solve(newNums, target)) {
                return true;
            }
            newNums.pop(); // 回溯
            // 尝试乘法运算
            if (i < j) {
                newNums.push(nums[i] * nums[j]);
                if (solve(newNums, target)) {
                    return true;
                }
                newNums.pop(); // 回溯
            }
            // 尝试除法运算
            if (nums[j] !== 0 && nums[i] % nums[j] === 0) {
                newNums.push(nums[i] / nums[j]);
                if (solve(newNums, target)) {
                    return true;
                }
                newNums.pop(); // 回溯
            }
        }
    }
    return false;
}

Step 3:调用递归函数,并输出结果:

let nums = [7, 7, 1, 2];
let target = 24;
if (solve(nums, target)) {
    console.log(\"可以得到 \" + target);
} else {
    console.log(\"无解\");
}

注意:递归算法的实现比较复杂,需要对JavaScript的函数、数组、循环结构以及逻辑结构有一定的掌握,需要具备一定的编程能力。