stack overflow但是找不到原因

问题遇到的现象和发生背景

https://leetcode-cn.com/problems/24-game/solution/24-dian-you-xi-by-leetcode-solution/

问题相关代码,请勿粘贴截图
#define tatget 24
const int ADD = 0, MULTIPLY = 1, SUBTRACT = 2, DIVIDE = 3;
const double EPSILON = 1e-6;

bool getresult(double* num, int len)
{
    int i = 0, j = 0, m = 0, mm = 0;
    double new[10] = { 0 };
    if (len == 1)
    {
        return (fabs(*num - tatget) < EPSILON);
    }
    for(i=0;i<len;i++)
        for (j = 0; j < len; j++)
        {
            if (i != j)
            {
                for (int k = 0; k < 4; k++)
                {
                    if (k == ADD)
                    {
                        new[0] = num[i] + num[j];
                        m = 1;
                        mm = 0;
                        while ( mm < len)
                        {
                            if (mm != i && mm != j)
                            {
                                new[m] = num[mm];
                                m++;
                            }
                            mm++;
                        }
                        if(getresult(new, m))
                            return true;
                    }
                    else if (k == MULTIPLY)
                    {
                        new[0] = num[i] * num[j];
                        m = 1;
                        mm = 0;
                        while (mm++ != i && mm != j && mm < len)
                        {
                            new[m] = num[mm];
                            m++;
                        }
                        if (getresult(new, m))
                            return true;
                    }
                    else if (k == SUBTRACT)
                    {
                        new[0] = num[i] - num[j];
                        m = 1;
                        mm = 0;
                        while (mm++ != i && mm != j && mm < len)
                        {
                            new[m] = num[mm];
                            m++;
                        }
                        if (getresult(new, m ))
                            return true;
                    }
                    else if (k == DIVIDE)
                    {
                        if (num[j] == 0)
                            continue;
                        new[0] = num[i] / num[j];
                        m = 1;
                        mm = 0;
                        while (mm++ != i && mm != j && mm < len)
                        {
                            new[m] = num[mm];
                            m++;
                        }
                        if (getresult(new, m ))
                            return true;
                    }
                }
            }
        }
    
        return false;
}
bool judgePoint24(int* cards, int cardsSize) 
{
    double num[10] = { 0 };
    for (int i = 0; i < cardsSize; i++)
        num[i] = cards[i];
    return getresult(num, cardsSize);
}
int main()
{
    int a[] = { 1,2,1,2 };
    bool m = judgePoint24(a,4);
    return 0;
}
运行结果及报错内容

最后报错getresult()函数overflow。不懂为甚会这样

我的解答思路和尝试过的方法

使用一个列表存储目前的全部数字,每次从列表中选出 2 个数字,再选择一种运算操作,用计算得到的结果取代选出的 2 个数字,这样列表中的数字就减少了 1 个。重复上述步骤,直到列表中只剩下 1 个数字,这个数字就是一种可能性的结果,如果结果等于 24,则说明可以通过运算得到 24。如果所有的可能性的结果都不等于 24,则说明无法通过运算得到 24。

我想要达到的结果

调试了一下,崩溃的时候,new数组的第一个元素是-1#F,也就是个无效值,一般在除法中除数为0会出现这种情况。所以你检查一下代码中除法部分,在进行除法操作时,增加判断除数是否为0。