java在一次返回中有两个值时如何返回一个值
假设int a=12,int b=22。那么gcd(b,a%b)或gcd(22,12)如何返回该值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
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(除数,余数)。我说的对吗?