问题是 -
给出无限数量的季度(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);
}
答案 0 :(得分:1)
此代码存在以下几个问题:
Int[] data = new int[n];
Int
不是java中的已定义类型(猜测这只是一个拼写错误),n
未在范围内定义(我猜您指的是numWays
的输入) Public
应为public
int[]
,默认值为0,而不是-1 除此之外:为什么阵列?这对于记忆来说非常低效,并且不会以你认为它起作用的方式工作。要么用HashMap
代替这部分代码,要么 - 因为你显然是初学者 - 为了简单起见,将它完全抛弃。你应该添加一个范围检查。到目前为止,您可能会使用n < 0
生成方法调用,该调用将以StackoverflowException
结束。