如何使用索引变量进行递归函数?

时间:2014-12-13 19:39:30

标签: c++ recursion

如何为递归函数使用索引变量,该函数在每次调用函数时递增,因此它可以返回值而不将其作为参数传递或使用静态或全局变量,因为我想多次调用此函数时间不仅一次。

这是我的代码:

bool isAlphabetic(string s)
{
    static int i = 0;
    if (i==s.size())
    {
        return true;
    }
    else if (!isalpha(s[i])){
        return false;
    }
    i++;
    return isAlphabetic(s);
}

有没有人知道如何解决这个问题?我知道我使用的是静态变量,但是这使得函数在第一次调用时正常运行,但之后却没有。

1 个答案:

答案 0 :(得分:4)

值得注意的是,由于堆栈溢出,递归可能会因较大的字符串而失败。

bool isAlphabetic(const string & s, int pos){
    if(i==s.size()) return true;
    else if(!isalpha(s[pos])) return false;
    return isAlphabetic(s, ++pos);
}

bool isAlphabetic(const string & s){
    return isAlphabetic(s, 0);
}