计算代表n cent

时间:2015-08-19 23:19:08

标签: java algorithm recursion data-structures dynamic-programming

问题是 -

给出无限数量的季度(25美分),角钱(10美分),镍币(5美分)和便士(1%),编写代码来计算代表n美分的方式数。

有谁能告诉我我的代码有什么问题?或者,如果它甚至是正确的?它是用Java编写的。

Int[] data = new int[n];

Public int numWays(int n) {

If (n == 0 ) {
    Return 0;
}

If (n==1) {
    Return 1;
}

If (data[n] != -1) {
    Return data[n];
}

Return Data[n] = numWays(n-25) + numWays(n-10) + numWays(n-5) +numWay(n-1);
}

1 个答案:

答案 0 :(得分:1)

此代码存在以下几个问题:

  • Int[] data = new int[n];
    Int不是java中的已定义类型(猜测这只是一个拼写错误),n未在范围内定义(我猜您指的是numWays的输入)
  • Public应为public
  • 初始化int[],默认值为0,而不是-1

除此之外:为什么阵列?这对于记忆来说非常低效,并且不会以你认为它起作用的方式工作。要么用HashMap代替这部分代码,要么 - 因为你显然是初学者 - 为了简单起见,将它完全抛弃。你应该添加一个范围检查。到目前为止,您可能会使用n < 0生成方法调用,该调用将以StackoverflowException结束。