用向量读取递归函数超出范围误差

时间:2017-12-02 21:53:56

标签: c++ recursion

我目前正在尝试创建一个读取函数字符串的函数(例如:" 6x ^ 2"所以为此我创建了这个函数,它接收一个输入的字符串,pos是字符串或递归函数的位置,取决于它运行的次数和向量,以便它可以在完成后返回它(然后通过sstream对其进行排序)但是我得到了一个范围错误。我添加了一个断点,但这并没有真正帮助它,继承代码:

var nums = UserDefaults.standard.array(forKey: "nums") as! [Int]
nums.append(1)
UserDefaults.standard.set(nums, forKey: "nums")

主要是这个:

vector<int> Recurofnum(const string& in, int pos, vector<int>& d) {
    if (pos == 0) { 
        // if first time
        if (isdigit(in.at(0))) { d.at(0) = in.at(0); posafterrecur++; pos++; Recurofnum(in, pos, d); }
        // ^ if first letter is a number do it over again by adding 1 to pos and calling recurofnum again
        else { d.at(0) = 1; posafterrecur++; return d; } 
        // ^if not the default is 1 for the first and only number in the vector
    }
    else // if not first time
    {
        if (isdigit(in.at(pos))) {
            // ^ if digit at current position
            if (pos == (in.size() - 1)) { return d; } // breakpoint
            else { d.at(pos) = in.at(pos); pos++; posafterrecur++; Recurofnum(in, pos, d); }
            /* ^ if first condition is true set the string's current position number to the vector
            and  call the function again to check for next position */
        }
        else { posafterrecur++; return d; } // if not return the vector
    }
    posafterrecur++;
}

我已经通过简单地给它一个定义的向量来检查它的排序算法,然后将它排序为一个int并将其排除,它完美无缺。

知道我做错了什么?

0 个答案:

没有答案