XXaar 2022-11-21 21:43 采纳率: 93.8%
浏览 3
已结题

求帮看递归代码,实在改不对了,是我的static错了吗

求帮看递归代码,实在改不对了
是我的static错了吗
题目:【题目描述】
从键盘任意输入两个正整数,求这两个数的最大公约数。要求使用递归的方法完成。
【输入样例】
24 36
【输出样例】
12

#include<stdio.h>
//使用递归方法完成求最大公约数
unsigned GetGreatestCommonDivisor(unsigned int x,unsigned int y);
int main()
{
    unsigned int x,y,z;
    scanf("%u %u",&x,&y);//输入语句
    z=GetGreatestCommonDivisor(x,y);
    printf("%u",z);//输出语句

    return(0);
}
unsigned GetGreatestCommonDivisor(unsigned int x,unsigned int y)
{
    static int i;
    i=(x>y?y:x);
    if(y!=x)
    {
       if(y%i==0&&x%i==0)
        {
            return (i);
        }
        else
        {
            i--;
            return GetGreatestCommonDivisor(x,y);
        }
    }
    else
        return x;
}


  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-11-21 23:15
    关注

    修改如下,供参考:

    #include<stdio.h>
    //使用递归方法完成求最大公约数
    unsigned GetGreatestCommonDivisor(unsigned int x,unsigned int y);
    int main()
    {
        unsigned int x,y,z;
        scanf("%u %u",&x,&y);//输入语句
        z=GetGreatestCommonDivisor(x,y);
        printf("%u",z);//输出语句
        return(0);
    }
    unsigned GetGreatestCommonDivisor(unsigned int x,unsigned int y)
    {
        int i;
        if (y > x){
            i = y;
            y = x;
            x = i;
        }
        if (x % y == 0)
            return y;
        else
            return GetGreatestCommonDivisor(y,x%y);
        //i=(x>y?y:x);
        //if(y!=x)
        //{
           //if(y%i==0&&x%i==0)
           //{
           //     return (i);
           //}
           //else
           //{
                //i--;
                //return
          //GetGreatestCommonDivisor(x,y);
           //}
        //}
        //else
        //    return x;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月22日
  • 已采纳回答 11月22日
  • 修改了问题 11月21日
  • 创建了问题 11月21日

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程