查看单个帖子
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB:如果循环内的Statement不执行,也不会打印到屏幕上

因此,我们正在尝试执行以下代码。两个if语句正在执行,但是内部if语句无法执行(我们通过不抑制输出来验证了这一点)。有什么原因吗?还是我们无法达到这种状态?

技术指标

输入如下:v是int值的向量,c是整数。 c必须小于或等于v内的值之一

我们正在尝试使用此算法解决的问题如下:
在给定收银机的情况下,如何进行更改以使尽可能少的硬币退还给客户?

例如:输入:v = [1、10、25、50],c =40。输出O = [5、1、1、0]

我们只是在寻找一种更好的解决方案,而更多是因为那部分代码没有执行。

function O = changeGreedy(v,c) O = zeros(size(v,1), size(v,2)); for v_item = 1:size(v,2) %locate largest term l_v_item = 1 for temp = 2:size(v,2) if v(l_v_item) < v(temp) l_v_item = temp end end %"Items inside if statement are not executing" if (c > v(l_v_item)) v(l_v_item) = -1 %"Not executing" else O(l_v_item) = idivide(c, v(l_v_item)) %"Not executing" c = mod(c, v(l_v_item)) %"Not executing" end end

回答:

如果c或v不是整数,即class(c)计算为double ,则出现以下错误消息

??? Error using ==> idivide>idivide_check at 66 At least one argument must belong to an integer class. Error in ==> idivide at 42 idivide_check(a,b); 并且程序停止执行。因此,第二条语句的内部永远不会执行。相反,如果c是一个整数,例如uint8类,则一切执行正常。

另外:您实际上想用此代码实现什么?



更多&回答...
poster 当前离线   回复时引用此帖