[英]Clarification on java pseudocode
这是我的作业问题。
考虑一下这个Java伪代码
string rep (int n){ ---> n is a natural number in this case.
if(n==0)
return "0";
if(n==1)
return "1";
string w = rep(n/2);
if(n%2==0)
return append (w,'0');
else
return append (w,'1');
}
如果在参数(十进制)637上调用此方法,那么递归调用的前两位数字(十进制)是什么?
在这种情况下,我对参数的含义感到困惑。 看来我可以将637除以8得到79。这是正确的吗?
在您的情况下,参数为n
。
通常,方法调用的参数(或该参数的参数列表)是放在方括号(here)
之间的内容:
myMethod(a, b, c);
在此示例中, a
, b
和c
是参数。 人们通常也将它们称为参数。 在这种情况下是相同的。
现在,您的问题继续到递归调用的前两个参数是什么。 为此,不是行string w = rep(n/2);
是递归调用。 因此,第一个递归调用将具有参数n / 2,这是637/2 = 318的四舍五入部分。反过来,下一个递归调用将是318/2 = 159。
参数是传递给函数的参数。
在您的情况下,函数为rep
,参数为n
第一个参数是637。n n=637
。 它不等于0。不等于w=rep(n/2) => w=rep(637/2) => w=rep(318.5)
。 那将是第一个递归调用,其参数将为318.5,因此答案将为31
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.