Java recursive easy to read
\nclass Solution {\n    public boolean judgePoint24(int[] nums) {\n        double[] doubles = new double[4];\n        for (int i = 0; i < 4; i++) {\n           
```\nclass Solution {\n    public boolean judgePoint24(int[] nums) {\n        double[] doubles = new double[4];\n        for (int i = 0; i < 4; i++) {\n            doubles[i] = nums[i] / 1.0;\n        }\n        return dfs(doubles);\n    }\n\n    public boolean dfs(double[] nums) {\n        int n = nums.length;\n        if (n==1 && Math.abs(nums[0] - 24.0) < 1e-6)\n            return true;\n        double[] left = new double[n-1];\n        for (int i = 0; i < n; i++) {\n            for (int j = i + 1; j < n; j++) {\n                for (int k = 0, l = 0; k < n; k++) {\n                    if (k != i && k != j) {\n                        left[l] = nums[k];\n                        l++;\n                    }\n                }\n                double a = nums[i], b = nums[j];\n                left[n-2] = a + b; if (dfs(left)) return true;\n                left[n-2] = a * b; if (dfs(left)) return true;\n                left[n-2] = a - b; if (dfs(left)) return true;\n                left[n-2] = a / b; if (dfs(left)) return true;\n                left[n-2] = b - a; if (dfs(left)) return true;\n                left[n-2] = b / a; if (dfs(left)) return true;\n            }\n        }\n        return false;\n    }\n}\n```
[]