Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编写一个函数,用递归函数检查一个数字是否为平方_C++_Recursion - Fatal编程技术网

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

C++ 编写一个函数,用递归函数检查一个数字是否为平方,c++,recursion,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){

这是我第一年学习编码,在我的家庭作业中,我必须找到一个递归函数来确定给定的数字是否为平方

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

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


如果没有递归,你会怎么做?这可能会让你开始使用递归解决方案。发表你关于非递归的想法,也许有人可以给你一个如何递归此类函数的提示。你可以看看如何将当前代码转换为递归代码。我投票结束这个问题,因为这不是“做我的家庭作业”服务@Jarod42@Quimby布尔内特a酒店{int t;t==1;而t
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;
}