C++中递归函数的使用

img


题目要求用递归函数但是我现在用了一种函数写出来了,感觉和书上递归函数的例子不太像

img


结果都能出来,就是不知道该怎么改


//计算a 与 b 的最大公约数并返回
int GCD(int a, int b)
{
    if(a == b)
        return a;
    else if(a>b)
        return GCD(a - b, b);
    else
        return GCD(a, b - a);
}
int main()
{
    int a,b,y;
    printf("Input two positive integers,a,b:\n");
    scanf("%d,%d",&a, &b);
    if(a<=0 || b<=0)
    {
        printf("Input error!");
    }
    else
    {
        y = GCD(a,b);
        printf("GCD= %d",y);
    }
    return 0;
}
 

“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出