编写一个函数,用递归函数检查数字是否是正方形



这是我编码的第一年,为了我的家庭作业,我必须找到一个递归函数来查找给定的数字是否是平方的......

如果我可以使用非递归函数,我有一些想法。但是我不知道递归。

 bool estCarre(int a)
{
    bool t;
    t=true;
        for (int i = 1; i <= a; i++)
    {
        if (i*i==a){
            return t=true;
        }
        if(i*i>a){
            return t=false;
        }
    }
    return t;   
}

您可以转换:

bool estCarre(int a)
{
    for (int i = 1; i <= a; i++)
    {
        if (i*i==a){
            return true;
        }
        if(i*i>a){
            return false;
        }
    }
    return false;
}

bool estCarre(int a, int i = 1)
{
    // Loop content:
    if (i * i == a) {
        return true;
    }
    if (i * i > a) {
        return false;
    }
    // increment + loop condition + (recursive) loop
    if (i + 1 < a) {
        return estCarre(a, i + 1);
    }
    // outside loop
    return false;
}

最新更新