c函数返回2个值,但只向语句传递1个值

c函数返回2个值,但只向语句传递1个值,c,C,你能帮我解释一下这是怎么得到3的吗 int main() { int k = fun(125, 35); printf("%d",k); return 0; } int fun(int x, int y){ if (y <= 1) return x; else if (y > x / y) return fun(y, x / y); else return fun(x / y, y); } 返回funy,x/y;返回一

你能帮我解释一下这是怎么得到3的吗

int main()
{
  int k = fun(125, 35);

    printf("%d",k);

  return 0;
}

int fun(int x, int y){

      if (y <= 1) return x;

      else if (y > x / y) return fun(y, x / y);

      else return fun(x / y, y);
}
返回funy,x/y;返回一个值。该值是使用两个参数y和x/y调用fun的结果


函数本身的这种使用称为递归。调用fun的可能值分为基本情况和一般情况。在基本情况下,函数以简单的方式计算。例如,在这个函数中,当程序第一次调用funit x,int y时,它将调用fun125,35。 由于35>1和35>125/35,因此您的函数将返回funy,x/y,即fun35,3。
现在,因为3>1但31和3=11/3,所以它将返回funx/y,y,即fun3,3。同样是3>1和3>3/3,因此它将调用fun3,1。现在y==1,因此函数将返回x的值,即3。

每个人都可以将代码发布到问题中,包括新手。只需粘贴代码,选择代码,单击“代码”按钮。代码按钮如下:{}谢谢我编辑了它。整数除法截断。所以,如果x是一个值为125的整数,y是一个值为35的整数,那么x/y是3。@ZikZik你必须先了解函数,然后再了解递归函数。这叫做递归。在语句return funy中,x/y;函数fun调用自身,将y作为第一个参数传递,将x/y作为第二个参数传递。新的fun调用运行并返回一个值。然后调用调用返回该值,该值称为尾部递归。