关于java伪代码的澄清

时间:2015-10-29 17:28:01

标签: 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上调用此方法,递归调用的前两个(十进制)-digit参数是什么?

我对这个实例中的参数含义感到困惑。似乎我可以将637除以8得到79.这是正确的吗?

3 个答案:

答案 0 :(得分:2)

在您的情况下,参数是n

通常,方法调用的参数(或者参数列表)是你在括号(here)之间放置的东西:

myMethod(a, b, c);

在此示例中,abc是参数。通常人们也将它们称为参数。在这种背景下,情况也是如此。

现在你的问题继续是递归调用的前两个参数。为此,行string w = rep(n/2);中的行为不是递归调用。因此,第一个递归调用将具有参数n / 2,它是637/2 = 318的向下舍入部分。反过来,下一个递归调用将是318/2 = 159。

答案 1 :(得分:1)

参数是传递给函数的参数 在您的情况下,函数为rep,参数为n

答案 2 :(得分:0)

第一个参数是637. n=637。它不等于0.它不等于1. w=rep(n/2) => w=rep(637/2) => w=rep(318.5)。那将是第一个递归调用,它的参数将是318.5,所以答案是31