如何在不使用min或特定功能的情况下找到最小值

时间:2017-10-13 11:02:54

标签: matlab for-loop vector min

function [c] = nextinteger(v)
c=0;
a =0;
h=[0];
for i= 1:length(v)
    if v(i)>0
        h=v;
        if h(i+1)>h(i)
            a = h(i);
            c=a+1;
        end 
    end
end
end

我必须"编写一个函数nextinteger(v),它将矢量v作为输入,并作为输出返回v中未出现的最小正整数。&# 34;

目前我似乎无法找到解决方案,上面的代码就我已经解决了。有人可以告诉我我需要考虑什么以及我需要修复什么才能更接近我的解决方案

期望结果的示例: 如果输入是

[1, 2, 3]

,输出为

4

如果输入是

[4, 0, 1, -10], 

输出将是

2

1 个答案:

答案 0 :(得分:0)

示例输入

v=[10 0 1 -1 3 4 5];

n=length(v); % length of input
tmp=1:n; % possible integer numbers
for k=1:n % loop over vector
    comp_value=v(k);

    for r=1:length(tmp) %loop over reference
        if tmp(r)==comp_value %compare 
           tmp(r)=[]; %eclude
           break
    end
    end
end

if isempty(tmp) % check whether all numbers are gone
    result=n+1;
else
    result=tmp(1);
end

输出:

result =

 2