我是在模拟编程考试中得到这个的,我对这种事情不太满意,有人可以向我解释一下我将如何处理以下内容吗?如果您觉得它可以更好地解释它,请将值更改为问题中的一个。这是最后的决定,这真的让我失望了。感谢您的帮助。
public int function( int a, int b)
{
if (a<=0){
return b;
}
else if (b<=0)
{
return function( a-2, 0);
}
else
{
return function (function (a-1, b-1), b-1);
}
好吧,我将逐步介绍其他价值观,以便您自己学习如何做。
让我们以这些值2,2
为例。
检查第一个if语句(if (a<=0)
)以查看其是否有效
a=2
所以a
用值代替2
是2 <= 0
?没有。让我们转到下一条语句
else if (b<=0)
注意:else if
本质上是在前一个if语句失败时使用的语句。
b = 2
是2<=0
?没有。进入下一个!
else
处理在第一个if
及所有后续操作中失败的所有操作else ifs
因此,只需插入值即可。
a = 2 b = 2
return function (function (a-1, b-1), b-1);
->
return function (function (2-1, 2-1), 2-1);
-> return function (function (1, 1), 1);
您可以通过两种方式使这种情况不断重复发生,或者在逻辑上加以考虑。
现在...让我们在这里开始注意一个模式,并寻找一个基本情况(通常用于此类递归函数),以便您注意到return b
第一个if语句最终将始终是实际的返回结果,而其他所有重复发生的语句偏离该结果,因为这是您将返回的唯一实际值。现在我们已经建立了我们如何才能达到那个价值?if语句a<=0
是到达那里的唯一方法。您开始注意到这些关系。
输入a <= b
或a <= 0
输出b
输入a > 0
a > b
输出0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句