用递归函数编写一个检查数字是否为平方的函数

时间:2019-06-04 19:49:30

标签: c++ recursion

这是我从事编码的第一年,对于我的家庭作业,我必须找到一个递归函数,该函数确定给定的数字是否为平方...

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

 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;   
}

1 个答案:

答案 0 :(得分:0)

您可能会改变:

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;
}