【发布时间】:2015-05-20 22:21:24
【问题描述】:
我一直在做作业(这只是一部分),我必须递归处理单元格数组,例如:
{1,{2,{5,{6,{}}}}}
我需要根据属性消除对象,即:
p=@(x)(x<3)
函数名是filter_list(list,p),使用结果应该是:
{1,{2,{}}}
代码是:
function [ list ] = filter_list( list,p )
if isempty(list)==1
disp('holo');
return;
else
if p(list{1})==0
disp('hola');
list(1)=list{2}(1);
list(2)=list{2}(2);
list{2}=filter_list(list{2},p);
else
disp('hele')
list{2}=filter_list(list{2},p);
end
end
但是我用这段代码得到的是:
{1,{2,{6,{}}}}
它只消除数组中第一个满足的元素:
p(list{1}) == 0
要求。
我该怎么做才能解决这个问题?另外,如果我使用大于 4 的数组,它也会崩溃。
【问题讨论】:
标签: arrays matlab cell-array