递归方法有问题吗?

Is there a problem with the recursive method?

我正在尝试验证数组[1..199] 的所有元素是否存在负元素。此代码不验证数组的第一个元素。我不得不通过递归方法来做这件事。

我试图做一个单独的条件,但这没有用。我是先用for做的,然后改成递归的方法。

   Var a:array[1..100] of integer;n:integer;

        Function E(n:integer):boolean;
          Begin
           if n=0 then E:=False
            else if a[n]<0 then E:=True
             else E:=E(n-1);
          End;

     Begin
      readln(n);
      for i:=1 to n do
        readln(a[i]);
      writeln('Are there negative numbers in array? ',E(n));
      readln();
     End;

如果有任何负元素,我希望输出为 true,如果没有,我希望输出为 false。

我不是 Pascal 专家,但我认为您正在寻找这样的东西:

program Hello;
var 
arrayWithNegatives : array[1..10] of integer = (-1,20,30,40,50,60,71,80,90,91);
arrayWithPositives : array[1..10] of integer = (0,20,30,40,50,60,71,80,90,91);
emptyArray : array of integer;

Function HasNegativeNumbers(a: array of integer; n:integer):boolean;
Begin
    if n < 0 then HasNegativeNumbers := False
    else if a[n] < 0 then HasNegativeNumbers := True
    else HasNegativeNumbers := HasNegativeNumbers(a, n - 1);
End;


begin
  writeln (HasNegativeNumbers(arrayWithNegatives, length(arrayWithNegatives) - 1));
  writeln (HasNegativeNumbers(arrayWithPositives, length(arrayWithPositives) - 1));
  writeln (HasNegativeNumbers(emptyArray, length(emptyArray) - 1))
end.