You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归实现GCD程序无返回结果的原因排查请求

问题分析与解决

你的递归版GCD函数存在无限递归问题,导致程序栈溢出后异常终止,因此没有任何输出。

问题根源

原函数中缺少递归终止条件:不管a和b是否相等,代码都会直接进入if/else分支发起递归调用,永远执行不到最后的return a;。递归没有终止点,会不断调用自身直到栈空间耗尽,程序直接崩溃,自然无法输出结果。

修正后的代码(辗转相减递归版)

#include <iostream>

using namespace std;

int gcd(int a,int b){
    // 终止条件:a与b相等时,该值就是最大公约数
    if(a == b){
        return a;
    }    
    if(a > b){
        return gcd(a - b, b);
    } else {
        return gcd(a, b - a);
    }
}

int main()
{
    cout << gcd(9,8);
    return 0;
}

更高效的优化版本(辗转相除法递归版)

如果追求更高效率,推荐使用辗转相除法的递归实现,避免大量减法操作:

#include <iostream>

using namespace std;

int gcd(int a, int b){
    // 终止条件:当b为0时,a就是最大公约数
    if(b == 0){
        return a;
    }
    return gcd(b, a % b);
}

int main()
{
    cout << gcd(9,8);
    return 0;
}

内容的提问来源于stack exchange,提问作者hussain muhammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:01:29