java伪代码的澄清

java伪代码的澄清,java,pseudocode,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调用此方法,递归调用的前两位

这是我的家庭作业问题

考虑一下这个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

一般来说,方法调用的参数(或参数列表)是放在括号中的内容
(此处)

在本例中,
a
b
c
是参数。人们通常也将其称为参数。在这种情况下也是如此


现在你的问题是递归调用的前两个参数是什么。对于这一点,不是第
行中的字符串w=rep(n/2)
是递归调用。因此,第一个递归调用将具有参数n/2,这是637/2=318的向下舍入部分。反过来,下一个递归调用将是318/2=159。

参数是传递给函数的参数。

在您的例子中,函数是
rep
,参数是
n

第一个参数是637<代码>n=637。它不等于0。它不等于1<代码>w=rep(n/2)=>w=rep(637/2)=>w=rep(318.5)。这将是第一个递归调用,其参数为318.5,因此答案为31

什么是
append
?伪代码应该做什么?作为
n
传递的值是一个参数。这个程序将一个数字转换成二进制。@Cyrbil我假定它的“简写”表示
w+c
Yes。附录表示“+”是的,您的答案是正确的。实际上很容易验证:将此代码转换为真正的Java代码,添加
System.out.println(n)指令,并查看前两位打印数字是什么。
n
是参数,您给它的值是参数。@PeterLawrey您是对的。我只是觉得这对初学者来说需要几年的时间。没错,我会说“争论在
n
”;)整数除法->318而不是318.5。318不是两位数。它有3个数字。
myMethod(a, b, c);