Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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
java在一次返回中有两个值时如何返回一个值_Java_Recursion_Return Value - Fatal编程技术网

java在一次返回中有两个值时如何返回一个值

java在一次返回中有两个值时如何返回一个值,java,recursion,return-value,Java,Recursion,Return Value,假设int a=12,int b=22。那么gcd(b,a%b)或gcd(22,12)如何返回该值 private int gcd(int a, int b){ if(b==0) { if(a<0){ return -a; } else { return a; } } else { return gcd(b,a%b); } } private int g

假设int a=12,int b=22。那么gcd(b,a%b)或gcd(22,12)如何返回该值

private int gcd(int a, int b){
    if(b==0) {
        if(a<0){
            return -a;
        } else {
            return a;
        }
    } else {
        return gcd(b,a%b);
    }
}
private int gcd(int a,int b){
如果(b==0){

如果(a我不确定这里的问题是什么,但听起来你认为这个函数返回了两个值


实际上,在最后一个
return
语句中,它返回调用的结果
gcd(b,a%b);
。因此它实际上不返回两个值,它只返回调用的结果,这是一个类型为
int
的单一值,就我所理解的问题而言,它是如何
gcd的(a,a%b)
可以用作返回值。这很简单:
返回gcd(a,a%b)
递归调用
gcd
并返回此调用的返回值,即
int
结果返回2的基本情况如果b的值不等于0,它将再次运行函数gcd,其中新的a现在是b,新的b是a%b。重要的是,这将在递归过程中重复循环函数gcd,直到b等于0

一旦b等于0,它将进入第二个循环,检查a是否小于0或任何负数。如果是负数,它将返回a的负值。如果是正数或更大或等于零,它将返回a的正值


如果你仍然不明白我想说的话,你可能需要理解gcd是如何计算的。你可能可以阅读更多关于这个问题的内容。我不知道你在问什么。这个代码只返回一个值。你到底在想什么?不是别的。否则,它只是格式不好。它应该返回答案。可能是2。我做了,答案是2,但是这个公式在这种情况下是如何工作的-@Paul Boddington@iCezzit返回一个值,对于gcd(22,12),这个值是2,但是结果是如何产生的?我想有什么数学公式吗?它通过一系列递归调用归结为
2
。调用的顺序是:
gcd(22,12),gcd(12,10),gcd(10,2),gcd(2,0)
谢谢,,,,它的意思是22/12,然后再调用gcd(除数,余数)。我说的对吗?