问题是-
给定无限数量的四分之一(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);
}发布于 2015-08-19 23:28:17
此代码有几个问题:
Int[] data = new int[n];
Int不是java中定义的类型(猜这只是一个错误),n在作用域上没有定义(我猜您指的是numWays的输入)Public应该是publicint[]被初始化为0作为默认值,而不是-1。除此之外:为什么是数组?对于内存来说,这是非常低效的,而且不会像你想象的那样工作。或者用HashMap替换代码的这一部分,或者--因为您显然是初学者--为了简单起见完全不要使用它。你应该加个范围检查。到目前为止,您可能会用n < 0生成一个方法调用,它将以一个StackoverflowException结束。
https://stackoverflow.com/questions/32107172
复制相似问题